我已经花了无数个小时来解决这个问题,利用 Google 搜索和其他 Stack Overflow 问题无济于事。
我有一个 iPhone/iPad 通用应用程序,当目标是 armv6 时,它似乎编译得很好。但是,当设备是 iPad 时,我收到以下警告:
警告:为 SDK 'Device - iPhone OS 3.2' 构建需要 armv7 架构。
奇怪的是,尽管有这个警告,该应用程序仍然在 iPad 上运行良好。但是,我确实想以“正确的方式”做事,这在这种情况下意味着什么。当我将目标架构切换到 armv7 时,出现链接错误:
“___restore_vfp_d8_d15_regs”,引用自: *已编辑* “___save_vfp_d8_d15_regs”,引用自: *已编辑* ld:未找到符号 collect2: ld 返回 1 个退出状态
错误的“编辑”部分是对我试图链接的静态库的引用。
这是我从网上的许多建议中尝试过的。这些中的每一个都被提出了不止一次,没有任何解释,这让我相信没有人完全理解这个问题:
“永远不要使用 XCode 窗口左上角的下拉菜单来选择目标。相反,在目标配置中将其设置为 Base SDK,然后将 Base SDK 设置为 iPhone OS 3.0。将目标设备设置为您的首选目标 ( iPad、iPhone OS 3.2 在我的情况下。)”
这会产生错误“找不到 -lcrt1.3.1.o 的库”
“确保 GCC 没有链接到错误版本的标准库。(您必须确保 LIBRARY_SEARCH_PATH 中没有错误的路径。)”
我的 LIBRARY_SEARCH_PATH 已经是空的,所以这似乎不相关。
“尝试使用 GCC 4.0 而不是 GCC 4.2 进行编译。”
我在 UIKit 头文件中收到语法错误。错误是“'AT_NAME' 标记之前的语法错误。” 该行是“UIKIT_EXTERN @interface UILocalizedIndexedCollation:NSObject”。
另一个项目使用相同的目标设置编译得很好,这真的让我质疑我的理智。我可以处理损坏的 XCode 项目吗?
如果有人知道实际发生了什么并且有参考或不介意解释它,我将非常感激。
干杯!