Xcode:进行单对象预链接

问题描述

我正在使用Xcode通过单对象预链接将所有包含位代码的对象文件(*.o)和静态库(*.a)的集合预链接到单个静态库中。

这样做,生成的预链接文件不包含位码。

Xcode发出的预链接命令和选项如下:

ld -r -arch arm64 -bitcode_bundle -bitcode_verify -syslibroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.6.sdk 
a.o 
b.o 
...
x.a
y.a
-o libABC-arm64-master.o

bitcode_bundle选项的文档指示“它需要所有目标文件,静态库和用户框架/ dylib包含位代码”。我已经使用otool来验证所有组成文件都包含位码。

ld命令不会引发或记录错误,即使我直接从命令行(与Xcode分开)进行测试也是如此。

我很困惑。任何帮助或建议,我们将不胜感激。

更新: 在进一步的测试中,我可以创建一个仅包含任何单个.o文件的预链接文件,而最终的预链接文件将包含位码。但是,如果包含其中两个.o文件中的任何两个,每个文件都包含位代码,则导致预链接的文件中不包含位代码。

解决方法

您可能应该检查结果库中的_LLVM部分,而不是_bitcode:

otool -l lib.a | grep _LLVM

https://stackoverflow.com/a/33105733/13891048

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...