在Mac osx中将.a转换为.dylib

new*_*ser 5 macos dynamic shared-libraries dylib static-libraries

是否可以将.a文件转换为Mac OSx中的.dylib文件?我目前有libraryname.a,它似乎不能包含在我的程序中,因为只包含.dylib库.

是否还有一个命令通过mac osx终端显示程序中使用的静态库?

Stu*_*erg 7

是的,这是可能的。要转换foo.alibfoo.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)