【问题标题】: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,并且库使用位码编译。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      相关资源
      最近更新 更多