首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘-fembed bitcode`’和BITCODE_GENERATION_MODE之间有什么区别?

‘-fembed bitcode`’和BITCODE_GENERATION_MODE之间有什么区别?
EN

Stack Overflow用户
提问于 2016-01-23 04:53:09
回答 1查看 20.8K关注 0票数 46

我一直在更新一个支持bitcode的静态库,通过我的研究,我找到了两种方法来实现这个目标:

  • fembed-bitcode标志添加到我的项目构建设置(链接)中的其他C标志选项
  • 使用键BITCODE_GENERATION_MODE将用户定义的设置添加到bitcode (链接)

这两种选择有什么区别吗?

我注意到的唯一不同是,通过使用fembed-bitcode,生成的iphone仿真器静态库将启用完整的bitcode (在我的示例中,二进制大小从5MB更改为13 my,我可以使用otool检查bitcode支持),这似乎对它的使用没有任何影响。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-23 15:18:40

通常使用ENABLE_BITCODE=YES构建库时,Xcode会将构建标志-fembed-bitcode-marker添加到任何clang调用中,在最后的o文件中放置一个“空”bitcode。

因此,如果您在构建阶段查看编译操作,它将如下所示:

CompileC {build_path}/StaticBitcode/StaticLogger.o StaticBitcode/StaticLogger.m正态armv7目标-c com.apple.compilers.llvm.clang.1_0.compiler cd {path}/StaticBitcode export =en_us.us-ASCII导出的armv7/armv7/Xcode采购产品.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective c -arch armv7 -fmessage-length=0 -f诊断-显示-说明-包括-堆栈-f宏-回溯-限制=0 -std=gnu99 -fobjc-弧形-fmodules -gmodules -f模块-缓存-.

这对构建操作(独立于目标)是正确的。

当您使用Build & Archive时,-fembed标志将被-fembed-bitcode替换,它确实构建了一个启用了比特码的二进制文件:

CompileC {build_path}/StaticBitcode/StaticLogger.o StaticBitcode/StaticLogger.m正态armv7目标-c com.apple.compilers.llvm.clang.1_0.compiler cd {path}/StaticBitcode export =en_us.us-ASCII导出的armv7/armv7/Xcode采购产品.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective c -arch armv7 -fmessage-length=0 -f诊断-显示-说明-包括-堆栈-f宏-回溯-限制=0 -std=gnu99 -fobjc-弧形-fmodules -gmodules -f模块-缓存-.

fembed位码标志

如果将-fembed-bitcode标志添加到其他C标志,则在编译期间将向编译器发送两个标志。它可能会让您在使用链接到另一个项目的库时收到的一些警告保持沉默。但是,您需要检查是否得到了预期的行为。:)

(当我在其他C标志上使用-fembed-bitcode进行测试时,Xcode给出了警告clang: warning: argument unused during compilation: '-fembed-bitcode-marker')

BITCODE_GENERATION_MODE

另一方面,

如果在BITCODE_GENERATION_MODE=bitcode上设置User-defined Setting,即使在构建阶段,文件也将使用标志-fembed-bitcode进行编译。

而且,如果您设置了BITCODE_GENERATION_MODE=marker,那么文件将使用标志-fembed-bitcode-marker编译,这与操作阶段无关。

因此,如果要对每个操作(构建和存档)启用bitcode,更好的方法是使用BITCODE_GENERATION_MODE设置。

资源

票数 64
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34959767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档