我知道安卓提供了对ARMv5TE和ARMv7a CPU的支持。(armeabi和areabi-v7a文件夹)现在大多数安卓手机的CPU都是不带VFP的ARMv6,带VFP的ARMv6和带VFP的ARMv7。
我的应用程序有物理模拟,我希望目标设备与硬件浮点只。(VFP)。我不希望支持没有VFP的设备。
如何配置NDK项目将ARMEABI代码编译为使用VFP而不是ARVv5TE的ARMv6?
我可以阻止旧的ARMv6没有VFP和ARmv5设备时,通过谷歌播放界面上传。
发布于 2012-12-10 06:27:39
NDK并没有提供任何方便的方法来更改默认的构建选项。您只能添加其他标志,但不能覆盖标准选项。
默认LOCAL_CFLAGS和大多数其他选项将不会对您起作用,因为NDK将其选项放在您的选项之后并覆盖您的标志。我所知道的唯一解决方案是在Application.mk中定义全局APP_CFLAGS。因此,下面的代码应该会导致针对armv6优化的二进制文件具有VFPv2:
APP_CFALGS += -march=armv6 -mno-soft-float -mfloat-abi=softfp -mfpu=vfp另外,如果我没记错的话,armv6硬件上的vfp指令需要在arm模式(而不是拇指模式)下编译你的代码。为Android.mk中的每个目标指定LOCAL_ARM_MODE := arm以实现此目的。
顺便说一下,我认为你不会满足于armv6设备的性能。即使是最新的高端armv7处理器也比现代英特尔酷睿CPU慢10倍左右。
https://stackoverflow.com/questions/13791828
复制相似问题