我有一个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 foundcollect2: ld returned 1 exit status
错误的“编辑”部分是对我想要链接的静态库的引用.
这是我从网上的许多建议中尝试过的.这些都是不止一次被提出而没有任何解释,这使我相信没有人完全理解这个问题:
“Never use the drop down menu in the upper left of the XCode window to choose the target. Instead,set this to Base SDK and then the Base SDK to iPhone OS 3.0 in the target configuration. Set the target device to your preferred target (iPad,iPhone OS 3.2 in my situation.)”
这会产生错误“找不到-lcrt1.3.1.o的库”
“Make sure that GCC isn’t linking against the wrong version of the standard library. (You’ll have to make sure the liBRARY_SEARCH_PATH doesn’t have the wrong path in it.)”
我的liBRARY_SEARCH_PATH已经为空,所以这似乎不相关.
“Try compiling with GCC 4.0 rather than GCC 4.2.”
我在UIKit头文件中遇到语法错误.错误是“’AT_name’令牌之前的语法错误.”该行是“UIKIT_EXTERN @interface UILocalizedindexedCollation:NSObject”.
另一个项目使用相同的目标设置编译得很好,这真的让我质疑我的理智.我可以处理一个损坏的XCode项目吗?
如果有人知道实际发生了什么并有参考或不介意解释它,我会非常感激.
干杯!
解决方法 ARMv7和ARMv6之间的VFP以各种方式不同.在ARMv7中,通常最好使用NEON.问题是您的静态库依赖于ARMv6中的VFP – 您需要在ARMv7上编译库或将整个应用程序保留在ARMv6中.恢复到GCC 4.0是愚蠢的 – 除非Apple向后推送,否则ARMv7支持基本上不存在.
总结以上是内存溢出为你收集整理的定位armv7时出现XCode链接错误全部内容,希望文章能够帮你解决定位armv7时出现XCode链接错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)