根据文献,A6处理器将执行ARMv7代码。我的项目在link上失败了,因为一个库是为ARMv7构建的,但应用程序是为ARMv7s构建的。
一个典型的信息是(当我连接我的iPad 4(视网膜)或iPhone 5时):
ld: warning: ignoring file /usr/local/ssl/iphoneos/lib//fipscanister.o, file was built for armv7 which is not the architecture being linked (armv7s): /usr/local/ssl/iphoneos/lib//fipscanister.o
ld: warning: ignoring file /usr/local/ssl/iphoneos/lib//libcrypto.a, file was built for archive which is not the architecture being linked (armv7s): /usr/local/ssl/iphoneos/lib//libcrypto.a
Undefined symbols for architecture armv7s:
"_FIPS_incore_fingerprint", referenced from:
_FINGERPRINT_premain in fips_premain.o
"_FIPS_signature", referenced from:
_FINGERPRINT_premain in fips_premain.o
"_FIPS_text_start", referenced from:
_FINGERPRINT_premain in fips_premain.o
ld: symbol(s) not found for architecture armv7s我知道我可以通过从有效体系结构(VALID_ARCHS)中删除ARMv7s来解决这个问题,但我不确定为什么,因为A6处理器可以执行A5对象代码。或者,我可以为ARMv7s架构执行一个额外的库构建,但这需要更多的工作,并且需要不同的磁盘目录结构。
将ARMv7库与ARMv7s应用程序链接起来有什么神奇之处吗?
发布于 2013-01-25 08:36:55
Jim Grosbach在Xcode mailing list上说,链接器开关-allow_sub_type_mismatches应该允许ld继续进行链接。来自苹果的ld man pages
-allow_sub_type_mismatches
Normally the linker considers different cpu-subtype for ARM
(e.g. armv4t and armv6) to be different different architec-
tures that cannot be mixed at build time. This option
relaxes that requirement, allowing you to mix object files
compiled for different ARM subtypes.还有一个名为LD_ALLOW_CPU_SUBTYPE_MISMATCHES的详细环境变量的Changelog entry。
然而,我发现-allow_sub_type_mismatches根本不能在Xcode4.5.2上工作。在互联网上,我们可以看到一些苹果公司为-allow_sub_type_mismatches设计的雷达。例如,请参阅雷达://6134468。
希望它现在已经解决了,但当谈到苹果和他们有缺陷的软件时,没有什么让我惊讶的。
https://stackoverflow.com/questions/14079848
复制相似问题