Tom*_*Tom 5 xcode linker ipad armv7
我已经花费了无数个小时来解决这个问题,利用谷歌搜索和其他Stack Overflow问题无济于事.
我有一个iPhone/iPad通用应用程序,当目标是armv6时似乎编译得很好.但是,当设备是iPad时,我收到此警告:
warning: building for SDK 'Device - iPhone OS 3.2' requires an armv7 architecture.
奇怪的是,尽管有这样的警告,该应用仍然在iPad上运行良好.但是,在这种情况下,我确实希望以"正确的方式"做事.当我将目标架构切换到armv7时,我得到链接错误:
"___restore_vfp_d8_d15_regs", referenced from:
*redacted*
"___save_vfp_d8_d15_regs", referenced from:
*redacted*
ld: symbol(s) not found
collect2: ld returned 1 exit status
错误的"编辑"部分是对我想要链接的静态库的引用.
这是我从网上的许多建议中尝试过的.这些都是不止一次被提出而没有任何解释,这使我相信没有人完全理解这个问题:
"切勿使用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项目吗?
如果有人知道实际发生了什么并有参考或不介意解释它,我会非常感激.
干杯!
ARMv7 和 ARMv6 之间的 VFP 在很多方面都有所不同。在 ARMv7 中,通常最好使用 NEON。问题是您的静态库依赖于 ARMv6 中的 VFP - 您要么需要在 ARMv7 上编译该库,要么将整个应用程序保留在 ARMv6 上。
恢复到 GCC 4.0 是愚蠢的 - 那时 ARMv7 支持基本上不存在,除非 Apple 向后移植它。
| 归档时间: |
|
| 查看次数: |
12959 次 |
| 最近记录: |