【发布时间】:2017-11-29 15:06:08
【问题描述】:
我正在为 tvOS 构建一个项目(如果它很重要,目标是一个框架)并从链接器获取错误:
ld:为 tvOS 构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64
我在OBJECTS_FILE_DIR_normal 中运行otool -l *.o 并发现其中一个.o 文件实际上是为iOS 而不是tvOS 构建的。
问题在于该.o 没有对应的源文件(*.mm 或*.cpp)。它被称为<ProjectName>_lto.o,我在构建日志中看不到该文件的任何编译器调用。它在链接器命令行中只出现一次:
-Xlinker -object_path_lto -Xlinker /Full/path/to/<ProjectName>.build/Debug-appletvos/tvOS.build/Objects-normal/arm64/<ProjectName>_lto.o
LLVM_LTO 构建设置未明确设置,但默认为NO。将其显式设置为 NO 无济于事。
我使用的是 Xcode 8.3.2 (8E2002)。
所以我的问题是:为什么要创建这个目标文件,为什么要为错误的目标平台创建它?
【问题讨论】:
标签: ios xcode linker-errors tvos lto