new*_*ser 5 macos dynamic shared-libraries dylib static-libraries
是否可以将.a文件转换为Mac OSx中的.dylib文件?我目前有libraryname.a,它似乎不能包含在我的程序中,因为只包含.dylib库.
是否还有一个命令通过mac osx终端显示程序中使用的静态库?
是的,这是可能的。要转换foo.a为libfoo.dylib,请尝试以下命令:
clang -fpic -shared -Wl,-all_load foo.a -o libfoo.dylib
Run Code Online (Sandbox Code Playgroud)
在 Linux 上,以下是使用以下命令的等效命令gcc:
gcc -fpic -shared -Wl,-whole-archive foo.a -Wl,-no-whole-archive -o foo.so
Run Code Online (Sandbox Code Playgroud)
这是一个完整的例子。
让我们从创建(和测试)开始libfoo.a:
clang -fpic -shared -Wl,-all_load foo.a -o libfoo.dylib
Run Code Online (Sandbox Code Playgroud)
现在让我们将其转换为libbar.dylib并再次测试:
gcc -fpic -shared -Wl,-whole-archive foo.a -Wl,-no-whole-archive -o foo.so
Run Code Online (Sandbox Code Playgroud)