标签: c macos linker gnu symbols
-R filename - 只是符号=文件名 从 filename 中读取符号名称及其地址,但不要将其重新定位或将其包含在输出中。这允许您的输出文件以符号方式引用其他程序中定义的内存的绝对位置。您可以多次使用此选项。
-R filename
- 只是符号=文件名
从 filename 中读取符号名称及其地址,但不要将其重新定位或将其包含在输出中。这允许您的输出文件以符号方式引用其他程序中定义的内存的绝对位置。您可以多次使用此选项。
例如,在我的Mac上,ld -R libsomething.a甚至gcc -Wl,-R,libsomething.a无效。
ld -R libsomething.a
gcc -Wl,-R,libsomething.a
答案 0 :(得分:2)
既然你在谈论“你的mac”,我想我们正在谈论OS X操作系统。
在基于UNIX的系统上,大多数时候都使用链接器“ld”(带-R选项)(另请参阅:ELF)。 相比之下,OS X Systems使用Mach-O二进制格式和工具dyld进行链接。 OS X不像UNIX那样为库提供相同的功能。在二进制文件上尝试otool -L以查看库的预期位置。您可能还想尝试为您的二进制文件设置DYLD_LIBRARY_PATH(man dyld),但请记住安全风险(这可用于在UNIX系统上注入像LD_LIBRARY_PATH这样的代码)。 / p>
otool -L
DYLD_LIBRARY_PATH
man dyld
LD_LIBRARY_PATH