假设我在运行装有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/