2011-03-15 126 views
17

直到xcode 4 final(我使用3.latest和4 GM的时间),这并没有发生。当我升级到的Xcode 4的最终版本,我开始一个链接错误,而试图将ARMv7的版本,我不ARMv7的链接库(我的项目设置与默认标准的ARMv6 ARMv7的有效架构):Xcode 4 Final - “armv6 armv7”问题与armv6库链接时

ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7) 
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7) 
Undefined symbols for architecture armv7: -- list of symbols -- 

的armv6版本编译得很好,但总体编译过程失败,出现77个链接错误。

我明白这是预期的行为,它不会连接到armv7与armv6库。解决方法是将我的项目设置为armv6。我的问题在于:为什么在以前版本的xcode中工作?

如果我设置为仅ARMv6的,我开始得到这样的警告:

Check dependencies 

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6"). 

我不喜欢看到:-)遇到类似问题,有人警告?

感谢,

费尔南多

回答

22

我只是在项目 - >生成设置 - >体系结构选项卡中将生成活动体系结构设置为是。

+3

我想说,只能防止这个错误发生在当前设备上。一旦你存档提交你想要支持所有体系结构 – Jakob 2012-06-22 08:53:20

+0

THX - 修复了以下问题: 错误:架构armv7s的未定义符号: “_OBJC_CLASS _ $ _ QREncoder”,引用自: 警告:ld:warning:忽略文件/用户/ neo/Library/Developer/Xcode/DerivedData/WinNav-fycjhbccktevjdbrxudedbysqxmy/Build/Products/Debug-iphoneos/libqrencoder.a,该文件是为存档构建的,而不是被链接的体系结构(armv7s):/ Users/neo/Library /Developer/Xcode/DerivedData/WinNav-fycjhbccktevjdbrxudedbysqxmy/Build/Products/Debug-iphoneos/libqrencoder.a – 2012-09-29 12:26:02

0

虽然我还是不知道为什么会这样开始只是在Xcode 4最终版发生了,我发现我的外部库(SSL加密和)的对阵双方编制的ARMv6和ARMv7在谷歌代码项目非常日前:

http://code.google.com/p/ios-static-libraries/

如果定义了两个不同的库搜索路径这将解决这个问题:一个用于ARMv6的,一个对ARMv7。

感谢,

7

在iOS版SDK 4.3,它看起来像连接器会直接拒绝在ARMv7的二进制使用ARMv6的库 - 在此之前,情况并非如此。

这就是为什么我必须更新http://code.google.com/p/ios-static-libraries/项目才能生成armv6和armv7版本的库。

3

我加入了第三方框架,一些示范类项目进入,但一旦实施它成功,我删除那些演示类和自那时以来,错误开始上来 错误 “LD:........ ,文件是通用的,但不包含(N)为架构的ARMv6"

的ARMv6片抓我的头了整整一天后,第二天早晨发现了这个解决方案的同胞iphone哥们也许有用怎么我知道痛

目标 - >“您的项目目标” - >获取信息 - >构建主动架构只设置为YES

就是这样..

1

有同样的问题。 但我认为原因不同。 我正在使用为模拟器建立的library.a文件,并试图在设备上运行它..后来知道我需要不同的.a文件模拟器和设备。我希望这可以帮助某人;)

+0

我会得到不同的.a文件的设备,我需要在设备上运行它的运行良好,但数据库是空白不起作用罚款 – 2016-10-05 10:50:26

+0

你可以使用相同的代码从你正在生成的模拟器文件,生成一个文件的偏差CE。您只需将目标更改为设备。 – Zaraki 2016-10-05 11:14:45

+0

是的,我明白你的观点 – 2016-10-05 11:17:17

相关问题