假设我在一台安装了Xcode 4.4的Mountain Lion Mac上有一个名为somelib.a的第三方库。 我想从中获取一个名为somelib.dylib的动态库。 适当的Linux命令是:
g++ -fpic -shared -Wl,-whole-archive somelib.a -Wl,-no-whole-archive -o somelib.so
将 -whole-archive 和 -no-whole-archive 参数传递给链接器。 在 Mac 上执行相同操作时:
g++ -fpic -shared -Wl,-whole-archive somelib.a -Wl,-no-whole-archive -o somelib.dylib
链接器出现错误:
ld: unknown option: -whole-archive
看起来,在OSX上的ld命令和GNU ld命令不同。我该如何修改上面的命令,以便获得所需的结果?
提前致谢!
-all_load
替换为-force_load
,似乎可以将一个 1.2mb 的 .a 文件压缩成一个 4kb 的 .dylib 文件,那么最有可能的诊断是什么? - Tommyld: 找不到符号对于架构 x86_64
- Balasubramanian-force_load
是唯一的解决方案!因为-noall_load
会导致一个很好的链接器错误(因为它已经被删除,之前已经过时了)。 - Top-Master-force_load
需要为每个库重复使用(例如 "-force_load libA.a -force_load -lB -force_load libC.a
",其中-lB
相当于libB.a
)。 - Top-Master