目前我正在编译armv6和armv7.我还将目标iOS版本设置为4.0.
我是否正确地说所有能够运行iOS 4.0+的设备都是armv7,因此我可以停止为armv6编译?
没什么大不了的,但这意味着如果可以,我的应用程序的二进制文件将会相当小.
我知道这是不可能的,Apple以这种方式计划强迫用户升级他们的设备.但我只是想知道是否有一些解决方法或黑客能够做到这一点?客户坚持认为我们仍然应该支持armv6,因为仍有"大"的应用用户百分比.
我知道一个叫做lipo合并静态库的命令,我在某个地方读到我们也可以用它来合并ipa文件,但我不确定它是如何完成的.我已经在谷歌和这个网站上进行了几次搜索,但很难找到具体的答案.
我有一个第三方.a库,显然只是为了兼容armv6而编译,其中新的Xcodes(3.2.6和4)现在都需要一个单独的armv7切片才能在设备上运行.链接错误是:文件是通用的,但不包含架构armv7的(n)armv7片.
任何人都知道如何让两个新的Xcode中的任何一个像3.2.5一样运行并接受现有的库,而我正在等待库供应商制作一个armv7版本?
直到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 --
Run Code Online (Sandbox Code Playgroud)
armv6版本编译得很好,但整个编译过程失败,出现77个链接错误.
我理解这是预期的行为,它不会与armv6 lib链接到armv7.该修复程序仅将我的项目设置为armv6.我的问题是:为什么这在xcode的早期版本中有效?
如果我只设置为armv6,我会开始收到此警告:
Check dependencies
[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").
Run Code Online (Sandbox Code Playgroud)
我不喜欢看到警告:-)任何人有类似的问题?
谢谢,
费尔南多
在将我的iOS App提交到App Store时,验证失败并显示以下消息:
iPhone/iPod Touch: application executable is missing a required architecture.
At least one of the following architectures(s) must be present: armv6
Run Code Online (Sandbox Code Playgroud)
我正在使用Xcode 4.5(4G182),目前是最新的.我的一些构建设置:
这里出了什么问题?
我最近使用iOS SDK 6.0迁移到XCode 4.5.现在,当我尝试存档我的应用程序时,我得到了一长串编译器警告,所有这些都是相同的.
警告:没有规则处理架构armv6类型sourcecode.c.objc的文件'$(PROJECT_DIR)/Classes/Utils.m'
警告:不支持架构armv6(当前ARCHS ="armv7 armv6").
我无法理解最后一行,它表示不支持armv6,但是你可以看到armv6存在.
1)我该如何解决这个问题?

2)这可能是什么意思?因为这只是一个警告?我的应用程序更新不会运行iphone 3gs吗?
谢谢
在编译iPhone应用程序时,有一个"优化"架构(仅限armv7)与标准armv6/armv7架构的设置.
编译armv7架构有什么好处/后果?
从Xcode 4.5开始,不再提供构建armv6设备的可能性(iPhone/iPod touch第1代和第2代).这意味着我们的iPhone 2G和3G应用程序没有新版本非常不吉利.有谁知道是否会有解决方法?我真的没有看到任何技术原因.
我有一个已发布的应用程序,它同时支持amrv6和armv7.现在我有一个仅与armv7兼容的升级(我添加了一个依赖于armv7的外部库).当我尝试将应用程序提交到商店时,我会收到详细信息
我理解上一个错误,我需要更改我的应用程序,以便它支持这两种体系结构.我的问题是我的代码依赖于一个只与armv7兼容的库.如果我更改项目的属性以支持armv6和armv7,我会收到编译错误(详情如下).我需要能够编译支持这两种体系结构的代码:使用我依赖于armv6的库的armv7编译有一个不依赖于库的不同代码.
我怎样才能做到这一点?
错误详情:
• the compile crash is in one Lib file (.a) and the error says :
ld: warning: directory not found for option '-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc/arm-apple-darwin10/4.0.1' ld: in /Users/.../(lib file).a, file is universal but does not contain a(n) armv6 slice for architecture armv6 Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1
提前致谢
我有一种情况,其中一些地址空间是敏感的,你读它崩溃,因为那里没有人回应该地址.
pop {r3,pc}
bx r0
0: e8bd8008 pop {r3, pc}
4: e12fff10 bx r0
8: bd08 pop {r3, pc}
a: 4700 bx r0
Run Code Online (Sandbox Code Playgroud)
bx不是由编译器作为指令创建的,而是32位常量的结果,它不适合作为单个指令中的立即数,因此设置了pc相对负载.这基本上是文字池.它碰巧有类似于bx的位.
可以轻松编写测试程序来生成问题.
unsigned int more_fun ( unsigned int );
unsigned int fun ( void )
{
return(more_fun(0x12344700)+1);
}
00000000 <fun>:
0: b510 push {r4, lr}
2: 4802 ldr r0, [pc, #8] ; (c <fun+0xc>)
4: f7ff fffe bl 0 <more_fun>
8: 3001 adds r0, #1
a: bd10 pop {r4, pc}
c: 12344700 eorsne r4, r4, #0, 14 …Run Code Online (Sandbox Code Playgroud)