假设我在运行装有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失败并显示错误:

ld: unknown option: -whole-archive


似乎OSX上的ld与GNU ld不同。我该如何修改上面的命令,以便获得所需的结果?

先感谢您!

最佳答案

我找到了解决问题的方法:

g++ -fpic -shared -Wl,-all_load somelib.a -Wl,-noall_load -o somelib.dylib


必需的参数是-all_load和-noall_load。

关于macos - OSX:如何将静态库转换为动态库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16082470/

10-09 06:43