linker - 为 `.o` 文件中的所有文本代码符号添加前缀
问题描述
我有多个 Fortran 静态库,它们具有相同名称的函数,我想从 Rust 调用它们。使用objcopy
前缀,我可以使名称唯一,如下所示:
ld -r obj1.o obj2.o ... objn.o -o static1.o
objcopy --localize-hidden --prefix-symbols=foo static1.o static2.o
ar -rcs mylib.a static2.o
但是,它似乎是所有objcopy
符号的前缀,即使是那些仅作为对外部库的函数调用出现的符号。因此,我收到以下错误:
/usr/bin/ld: (.text+0xaf0c): undefined reference to `foo_gfortran_runtime_error_at'
看来我只想重命名标记为 的T
符号nm
。这个对吗?有没有办法用objcopy
or做到这一点ld
?
您是否还知道适用于 Mac 的解决方案(在哪里objcopy
不可用)?
解决方案
推荐阅读
- spring - 在添加 Redis 依赖项时创建名称为“requestMappingHandlerAdapter”的 bean 时出错
- javascript - 如何使用 OpenCV.js 增加亮度?
- angular - 单选按钮禁用和启用取决于值 angular 6
- sql - 获取每个 id 的最新记录
- php - Laravel 5.6 在关系中应用枢轴范围
- c++ - macOS 上的 Qt GUI 应用程序:如何找到当前活动的屏幕?
- r - 在 deSolve 中延迟参数值/流入和流出速率
- azureservicebus - PeekLock Microsoft Azure 服务总线
- c# - 如何将依赖项注入 signalR 核心的集线器构造函数?
- c# - 来自 API 的多种返回类型