非 GNU 链接器是不是有与 GNU 链接器“--just-symbols”选项等效的选项?

Posted

技术标签:

【中文标题】非 GNU 链接器是不是有与 GNU 链接器“--just-symbols”选项等效的选项?【英文标题】:Is there an equivalent to the GNU linker "--just-symbols" option for non-GNU linkers?非 GNU 链接器是否有与 GNU 链接器“--just-symbols”选项等效的选项? 【发布时间】:2011-05-28 09:59:55 【问题描述】:

-R 文件名

--just-symbols=文件名

filename 中读取符号名称及其地址,但不要重新定位它或将其包含在输出中。这允许您的输出文件以符号方式引用其他程序中定义的内存的绝对位置。您可以多次使用此选项。

例如,在我的 Mac 上,ld -R libsomething.a 甚至 gcc -Wl,-R,libsomething.a 都不起作用。

【问题讨论】:

答案当然取决于您使用的非 GNU 链接器,因为 args 由调用的特定链接器处理。 您收到什么错误信息;您还使用什么链接器和版本? 这取决于您使用的哪个“非GNU”链接器。 【参考方案1】:

既然您在谈论“您的 Mac”,我假设我们在谈论 OS X 操作系统。

在基于 UNIX 的系统上,大多数时候使用链接器“ld”(带有 -R 选项)(另请参见:ELF)。 相反,OS X 系统使用Mach-O 二进制格式和工具dyld 进行链接。 OS X 没有为库提供与 UNIX 相同的功能。在二进制文件上尝试otool -L 以查看库的预期位置。您可能还想尝试为您的二进制文件设置DYLD_LIBRARY_PATH (man dyld),但请记住安全风险(这可用于在 UNIX 系统上注入 LD_LIBRARY_PATH 之类的代码)。

【讨论】:

以上是关于非 GNU 链接器是不是有与 GNU 链接器“--just-symbols”选项等效的选项?的主要内容,如果未能解决你的问题,请参考以下文章

使用 GNU 链接器的正确方法

GNU 链接器脚本 - 将闪存移动到新区域

重新排序 gnu autotools 链接器标志

GNU 链接器:适应名称修改算法的更改

使用 GNU ld 链接器脚本包含二进制文件

GNU链接器:替代--version-script在命令行列出导出的符号?