我尝试归档我的项目时收到此错误:
警告:iPhone/iPod Touch:应用程序可执行文件缺少必需的体系结构.必须至少存在以下架构之一:armv6(-19033)无法验证您的应用程序.- (空值)
我已经检查了我的构建设置,但我只是在选项中看不到ARM6,只有7.
任何帮助将不胜感激.
Shni
请从下面的错误帮助我.
我正在使用第三方框架(libIPhonecharting)处理图形,每个东西在模拟器中工作正常,但是当我尝试构建.app文件以在IPAD设备中安装时,我收到以下错误消息.
忽略文件/Users/xyz/Desktop/xyzIPAD/library/4.0/Release-iphoneos/libIPhoneCharting.a,文件是为归档而构建的,而不是被链接的体系结构(armv6)
体系结构armv6的未定义符号:"_ OBJC_CLASS _ $ _ DTCStroke",引自:DemoLineChart.o中的objc-class-ref"_OBJC_CLASS _ $ _ IPCBar3DChart",引自:DemoBar3DChart.o中的objc-class-ref"_OBJC_CLASS _ $ _ IPCLineChart",引用自:DemoLineChart.o中的objc-class-ref"_ OBJC_CLASS _ $ _ DTCDefaultCategoryDataset",引自:DemoBar3DChart.o中的objc-class-ref,DemoLineChart.o中的objc-class-ref"_DTC_STROKE_CAP_SQUARE",引用自:+ [DemoLineChart(Private) getRenderWithRender:]在DemoLineChart.o"_ OBJC_CLASS _ $ _ IPCTitle"中,引用自:DemoBar3DChart.o中的objc-class-ref,在DemoLineChart.o中的objc-class-ref"_DTC_STROKE_JOIN_BEVEL",引自:+ [DemoLineChart(Private)getRenderWithRender:]在DemoLineChart.o ld:找不到架构armv6的符号collect2:ld返回1退出状态
ARM ARM实际上没有在这条指令上使用正确的方法,但是我发现它在其他地方使用它来知道它需要一个地址作为读取下一个值的位置的提示.
我的问题是,给定一个256字节的紧密复制循环ldm/stm指令,例如r4-r11 x 8,最好在复制之前,在每个指令对之间预取每个缓存行,或者根本不执行它memcpy.问题不在于读取和写入相同的内存区域.我非常确定我的缓存行大小是64字节,但它可能是32字节 - 在此处编写最终代码之前等待确认.
我有一款目前支持ARMV6和ARMV7的产品,这意味着支持iPhone 3G.但是,我们的目标是迁移到直接ARMV7架构(以减少二进制大小,并解决我们与某些仅链接的ARMV7库相关的构建错误).但是,我们不希望完全让3G用户陷入困境,并允许他们下载仍支持其硬件的较低版本.我的问题是:
有谁知道这种升级的App Store行为(记录或轶事)是什么?
我知道3G用户如果拥有它就能够使用该应用程序,并且不允许升级到新的ARMV7版本......但是那些必须在3G设备上重新安装的用户呢?商店是否允许他们下载旧版本,还是只是告诉他们购买新硬件?
我正在使用本机代码在Android中进行一些图像压缩.由于各种原因,我不能使用预先构建的库.
我使用android-ndk-profiler分析了我的代码,发现瓶颈是 - 令人惊讶的 - 浮点运算!这是配置文件输出:
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
40.37 0.44 0.44 __addsf3
11.93 0.57 0.13 7200 0.02 0.03 EncodeBlock
6.42 0.64 0.07 535001 0.00 0.00 BitsOut
6.42 0.71 0.07 __aeabi_fdiv
6.42 0.78 0.07 __gnu_mcount_nc
5.50 0.84 0.06 __aeabi_fmul
5.50 0.90 0.06 __floatdisf
...
Run Code Online (Sandbox Code Playgroud)
我用Google搜索__addsf3,显然它是一个软件浮点运算.呸.我对ARMv6架构核心进行了更多的研究,除非我遗漏了什么,否则它没有硬件浮点支持.那么我能在这里做些什么来加快速度呢?固定点?我知道通常用整数完成,但我不确定如何转换我的代码来做到这一点.是否有我可以设置的编译器标志,所以它会这样做?欢迎其他建议.
我正在开发一个使用twitter API的应用程序.
当它连接到IOS设备时,应用程序运行正常,但是当我将架构从armv6更改为i386以使其在模拟器上运行时,我收到此错误:
ld: warning: ignoring file /Users/username/Desktop/tweetsAloud/tweets2/tweetsAloud/Src/NeoSpeech/lib-i iphoneos/libvt_eng_julie.a, missing required architecture i386 in file
Undefined symbols for architecture i386:
"_VT_LOADTTS_ENG", referenced from:
-[TweetsViewController viewWillAppear:] in TweetsViewController.o
"_VT_UNLOADTTS_ENG", referenced from:
-[TweetsViewController viewWillDisappear:] in TweetsViewController.o
"_VT_TextToFile_ENG", referenced from:
-[TweetsViewController readyStringToPlay:] in TweetsViewController.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
所以我已经阅读了很多建议,并尝试了大部分的运气.
我首先确保我拥有所有框架,然后我尝试编辑project.pbxproj,仍然无法正常工作.
我尝试过清理和更改构建设置.
任何人有任何想法,为什么我收到此错误消息?
我正在尝试通过xcode上传应用.此应用程序几乎与我最近使用相同的配置文件更新或上传的许多其他应用程序相同,因此签名不应成为问题.我在项目中也没有任何Entitlements,也没有在Build Settings中启用或指向它们.我相信我已经确认了每个Build Setting,正如关于这个主题的许多主题所建议的那样,但仍然没有运气.另外,我将armv6和armv7列为架构.但是,我仍然存在以下错误:
1)iPhone/iPod Touch:应用程序可执行文件缺少必需的体系结构:必须至少存在以下一种体系结构:armv6
2)应用程序faild协同设计验证.签名无效,包含不允许的权利,或未与iPhone分发证书签名.
3)无法从应用程序中提取权利:(null)
我将如何重定位ARM异常向量?
基本上,我需要能够以某种方式重新映射它们,所以当ARM内核尝试执行向量时,它应该执行存储在内核的RAM位而不是存储在ROM中的自定义异常向量0x0.那可能吗?或者我的意思是将中断从ROM路由到内核?
基本上,有没有办法告诉ARM内核," 这里是你的向量表的新地址 "?我知道你可以在高矢量模式下启动CPU,但那不是我想要的.我需要能够动态地将矢量基数设置为自定义地址.
我正在开发一款iPhone应用程序,不仅应该在新的iphone上运行,还应该在旧设备上运行.因此,对于测试,我确实将配置文件加载到我的旧iPhone 3G(iOS 4.2.1)并将其与我的mac连接.在Xcode中,我也将iOS部署目标设置为3.0.使用此设置,应用程序可以在iPhone 4上运行,但不能在我的旧iPhone 3G上运行.
我知道,我还必须从设置架构armv7到armv6,但是当我进入"ARMv6的"它跳回"的ARMv7".
那么,我该怎么做才能在旧设备上测试新的应用程序?我必须输入什么值,我必须在哪里输入它们?我是否需要为实际的SDK下载一些插件?
我在cortex-m0上有一个svc异常处理程序的以下实现:
int __attribute__((naked))
sv_call_handler(uint32_t n, uint32_t arg1, uint32_t arg2, uint32_t arg3,
uint32_t arg4, uint32_t arg5)
{
irq_off();
Run Code Online (Sandbox Code Playgroud)
当我为cortex-m0构建它时,它看起来像这样:
0x7a50 <sv_call_handler> movs r4, r0
0x7a52 <sv_call_handler+2> str r1, [r7, #12]
0x7a54 <sv_call_handler+4> str r2, [r7, #8]
0x7a56 <sv_call_handler+6> str r3, [r7, #4]
0x7a58 <sv_call_handler+8> bl 0x3194 <irq_off>
Run Code Online (Sandbox Code Playgroud)
当然,导致硬故障,R7中的值是"未定义的",并且它很可能包含不在地址范围内的值.
当我删除裸属性时,程序集更有意义:
0x7a50 <sv_call_handler> push {r4, r5, r7, lr}
0x7a52 <sv_call_handler+2> sub sp, #32
0x7a54 <sv_call_handler+4> add r7, sp, #8
0x7a56 <sv_call_handler+6> str r0, [r7, #12]
Run Code Online (Sandbox Code Playgroud)
我之前没有使用过裸属性,为什么现在会发生这种情况呢?与svc异常处理程序是一个特殊情况这一事实有什么关系吗?
armv6 ×10
arm ×5
armv7 ×3
ios ×3
android ×1
app-store ×1
architecture ×1
assembly ×1
c ×1
cortex-m ×1
gcc ×1
i386 ×1
ios4 ×1
iphone ×1
ld ×1
linker ×1
objective-c ×1
optimization ×1
system-calls ×1
xcode ×1