Xcode 4 Final - 与armv6 libs链接时出现“armv6 armv7”问题

时间:2011-03-15 18:48:21

标签: iphone xcode static-linking armv7 armv6

直到xcode 4 final(我在可用的时候使用3.latest和4 GM)这没有发生。当我升级到xcode 4最终版本时,我在尝试将armv7版本与我的非armv7库链接时开始出现链接错误(我的项目使用默认的标准armv6 armv7有效架构设置):

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个链接错误。

我理解这是预期的行为,它不会与armv6 lib链接到armv7。该修复程序仅将我的项目设置为armv6。我的问题是:为什么这在xcode的早期版本中有效?

如果我只设置为armv6,我会开始收到此警告:

Check dependencies

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

我不喜欢看到警告:-)任何人有类似问题吗?

谢谢,

费尔南多

5 个答案:

答案 0 :(得分:22)

我刚刚在项目中将Build active架构转为Yes - >构建设置 - >架构选项卡。

答案 1 :(得分:7)

在iOS SDK 4.3中,链接器似乎只是拒绝在armv7二进制文件中使用armv6库 - 以前情况并非如此。

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

答案 2 :(得分:3)

我已将第三方框架与一些演示类添加到项目中但是一旦成功实现它我删除了那些演示类,从那时起错误就开始了 的错误 “ld:.........,文件是通用的,但不包含架构armv6的(n)armv6切片”

在我挠了一整天之后,我发现第二天早上这个解决方案可能对其他iphone好友很有帮助因为我知道疼痛

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

多数民众赞成......

答案 3 :(得分:1)

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

答案 4 :(得分:0)

虽然我仍然不知道为什么这种情况只发生在xcode 4最终版本中,但我发现我的外部库(ssl和crypto)几天前在google代码项目中针对armv6和armv7进行了编译:

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

如果您定义两个不同的库搜索路径,这将解决此问题:一个用于armv6,另一个用于armv7。

谢谢,