链接共享库

时间:2018-05-01 11:53:13

标签: ios shared-libraries dylib bitcode

我尝试使用bitcode编译iOS的几个开源库作为共享库。我已将标记-fembed-bitcode添加到CFLAGS和LDFLAGS中。编译正常完成,但是一些结果库(例如curl)中没有bitcode(我已经用otool -l lib.dylib | grep LLVM检查了它。)

我的调查表明,当dylib链接时,标记-fembed-bitcode只是从链接器命令行中消失,但在Makefile中,在这个地方直接使用LDFLAGS。 -fembed-bitcode如何从LDFLAGS消失?

1 个答案:

答案 0 :(得分:1)

-fembed-bitcode标志消失的原因是库默认使用libtool进行链接并且strips个未知标志:

  

创建共享库时,但不是在编译或创建共享库时   程序,libtool从命令行中删除一些标志   用户。这样做是因为libtool未知的标志可能会干扰   创建库或需要libtool的额外支持,以及   因为省略标志通常是a的保守选择   成功的建设。

     

如果遇到您认为有用的标志,则作为a   解决方法可以使用-Wc或-Xcompiler前置标志以允许   它们将被传递给编译器驱动程序(请参阅链接模式)。   另一种可能性是在编译器命令处添加标志   配置运行时间:

     

./ configure CC ='gcc -m64'

所以除了-Wc,-fembed-bitcode之外我还要向LDFLAGS添加-fembed-bitcode标志,并使用bitcode编译库。