选项 -fembed-bitcode 在链接共享库时消失



我尝试将几个适用于iOS的开源库编译为带有位码的共享库。我已经将标志-fembed-bitcode添加到CFLAGS和LDFLAGS中。编译正常完成,但一些生成的库(例如 curl(中没有位码(我已经用otool -l lib.dylib | grep LLVM检查过(。

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

-fembed-bitcode标志消失的原因是库使用 libtool 进行链接,默认情况下它会去除未知标志:

创建共享库时

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

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

./配置 CC='gcc -m64'

因此,除了使用位码进行-fembed-bitcode和库编译之外,我只是将-Wc,-fembed-bitcode标志添加到LDFLAGS。

最新更新