【问题标题】:Option -fembed-bitcode disappear when linking shared library链接共享库时选项 -fembed-bitcode 消失
【发布时间】:2018-05-01 11:53:12
【问题描述】:
我尝试将 iOS 的几个开源库编译为带有位码的共享库。我已将标志 -fembed-bitcode 添加到 CFLAGS 和 LDFLAGS 中。编译正常完成,但一些生成的库(例如 curl)中没有位码(我已经用otool -l lib.dylib | grep LLVM 进行了检查)。
我的调查表明,当 dylib 链接时,标志 -fembed-bitcode 只是从链接器命令行中消失,尽管在 Makefile 中直接使用了 LDFLAGS。 -fembed-bitcode 如何从 LDFLAGS 中消失?
【问题讨论】:
标签:
ios
shared-libraries
dylib
bitcode
【解决方案1】:
-fembed-bitcode标志消失的原因是库使用libtool进行链接,默认strips未知标志:
在创建共享库时,而不是在编译或创建共享库时
程序,libtool 从提供的命令行中删除一些标志
用户。这样做是因为 libtool 未知的标志可能会干扰
创建库或需要 libtool 的额外支持,以及
因为省略标志通常是一个保守的选择
成功构建。
如果你遇到你认为有用的标志,作为
解决方法,您可以在标志前面加上 -Wc 或 -Xcompiler 以允许
它们被传递给编译器驱动程序(参见链接模式)。
另一种可能性是在编译器命令中添加标志
配置运行时间:
./configure CC='gcc -m64'
因此,除了-fembed-bitcode 之外,我只需将-Wc,-fembed-bitcode 标志添加到LDFLAGS,并且库使用位码编译。