Android NDK ARM构建设置可在大多数设备上运行?

Android NDK ARM构建设置可在大多数设备上运行?,第1张

概述我有一些AndroidNDK应用程序出来了,人们抱怨我的应用程序无法在他们的手机上运行.我想知道的是哪些编译设置将支持市场上大多数(如果不是全部)ARM设备?我的问题似乎是armeabi-v7a设备,它们对VFP,NEON等具有不同程度的支持.我正在寻找一种解决方案,以构建可在大多数平台上运行的应

我有一些Android NDK应用程序出来了,人们抱怨我的应用程序无法在他们的手机上运行.我想知道的是哪些编译设置将支持市场上大多数(如果不是全部)ARM设备?

我的问题似乎是armeabi-v7a设备,它们对VFP,NEON等具有不同程度的支持.我正在寻找一种解决方案,以构建可在大多数平台上运行的应用程序,即使这样做会以优化为代价.

我正在为armeabi和armeabi-v7a使用默认的NDK构建脚本,该脚本指定了:
-march = armv7-a -mfloat-abi = softfp -mfpu = vfpv3

这在某些设备上不起作用,例如在Acer A500(cpu NvIDia Tegra2(双Cortex A9))上.从我在这里学到的http://wiki.debian.org/ArmHardFloatPort/VfpComparison,此cpu没有实现NEON.

崩溃具体是这样的:

F/libc    (15549): Fatal signal 4 (SIGILL) at 0x5bfd9260 (code=1)...(snip)...I/DEBUG   (   81): #00 pc 0005b260 /data/data/com.burnsmod.oscpad/lib/libapplication.so (tanf)

查看libapplication.so,我看到tanf生成为:

0005b25c <tanf>:5b25c:       ee070a90        fmsr    s15, r05b260:       eef70ae7        fcvtds  d16, s155b264:       e92d4010        push    {r4, lr}5b268:       ec510b30        vmov    r0, r1, d165b26c:       ebff4b6c        bl      2e024 <_ZN15buttonUIHandler10FreeImagesEv-0x6ac>5b270:       ec410b30        vmov    d16, r0, r15b274:       eef77be0        fcvtsd  s15, d165b278:       ee170a90        fmrs    r0, s155b27c:       e8bd8010        pop     {r4, pc}

那么,答案是什么? vfpv2? vfp? vfpv3? vfpv3-d16?

现在,如果我使用readelf,我发现我的应用程序库的依赖项是:

MacBook:armeabi-v7a tom$arm-linux-androIDeabi-readelf -A libapplication.soAttribute Section: aeabifile AttributesTag_cpu_name: "7-A"Tag_cpu_arch: v7Tag_cpu_arch_profile: ApplicationTag_ARM_ISA_use: YesTag_THUMB_ISA_use: Thumb-2Tag_VFP_arch: VFPv3Tag_ABI_PCS_wchar_t: 4Tag_ABI_FP_denormal: NeededTag_ABI_FP_exceptions: NeededTag_ABI_FP_number_model: IEEE 754Tag_ABI_align8_needed: YesTag_ABI_align8_preserved: Yes, except leaf SPTag_ABI_enum_size: intTag_ABI_HardFP_use: SP and DP

VFP2:NDK 7不支持使用“ -mfpu = vfpv2”或“ -mfpu = vfp2”进行编译,两者均返回错误消息.

解决方法:

事实证明,我的问题是我使用的是NDK r7b,它存在一些错误,其中某些核心库中包含VFPv3代码.

http://code.google.com/p/android/issues/detail?id=26199

它已在r7c中修复,并且通过升级到r8b看起来就像我修复了该问题.

总结

以上是内存溢出为你收集整理的Android NDK ARM构建设置可在大多数设备上运行?全部内容,希望文章能够帮你解决Android NDK ARM构建设置可在大多数设备上运行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存