17

直到 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 库链接到 armv7。修复将我的项目设置为仅 armv6。我的问题是:为什么这在以前版本的 xcode 中有效?

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

Check dependencies

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

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

谢谢,

费尔南多

4

5 回答 5

22

我刚刚在 Project -> Build Setting -> Architectures 选项卡中将 Build active architecture only 设置为 Yes。

于 2011-04-01T12:28:53.700 回答
7

在 iOS SDK 4.3 中,链接器似乎会简单地拒绝在 armv7 二进制文件中使用 armv6 库——以前不是这种情况。

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

于 2011-03-28T00:55:08.057 回答
3

我已将带有一些演示类的 3rd 方框架添加到项目中,但一旦成功实施,我就删除了这些演示类,从那时起错误开始出现 错误 “ld:……,文件是通用的,但不是包含架构 armv6 的 (n) armv6 切片"

挠了一整天的头后,第二天早上我发现这个解决方案可能对 iPhone 伙伴有帮助,因为我知道痛苦

Targets->“Your Project Target”-> Get Info -> Build Active Architecture only 设置为 YES

而已..

于 2011-07-07T03:13:28.343 回答
1

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

于 2012-01-17T09:20:33.167 回答
0

虽然我仍然不知道为什么这仅在 xcode 4 最终版本中开始发生,但我发现我的外部库(ssl 和加密)是在几天前的 google 代码项目中针对 armv6 和 armv7 编译的:

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

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

谢谢,

于 2011-03-15T19:14:27.273 回答