是否可以为ARMV6编译Android库,也可以选择使用VFP?
我目前使用是否可以为ARMV6编译Android库,也可以选择使用VFP?,android,android-ndk,armv6,Android,Android Ndk,Armv6,我目前使用-mfloat abi=softfp-mfpu=vfp 我认为上述产品线需要具有真正VFP支持的ARMV6设备 如果我使用-mfloat abi=soft?在没有真正的VFP支持的情况下,这在ARMV6设备上可以工作,但比不指定mfloat abi更快吗 (我不想创建包含2.so文件的胖二进制文件)gcc信息页面显示: 指定soft会导致GCC生成包含库的输出 调用浮点操作softfp允许 使用硬件浮点指令生成代码,但 仍然使用软浮点调用约定硬允许 生成浮点指令并使用特定于FPU的 呼
-mfloat abi=softfp-mfpu=vfp
我认为上述产品线需要具有真正VFP支持的ARMV6设备
如果我使用-mfloat abi=soft
?在没有真正的VFP支持的情况下,这在ARMV6设备上可以工作,但比不指定mfloat abi
更快吗
(我不想创建包含2.so文件的胖二进制文件)gcc信息页面显示: 指定
soft
会导致GCC生成包含库的输出
调用浮点操作softfp
允许
使用硬件浮点指令生成代码,但
仍然使用软浮点调用约定<代码>硬允许
生成浮点指令并使用特定于FPU的
呼叫约定
因此,对于带有FPU的目标,使用soft
并不是您想要的
目前大多数交付的设备都有ARMv7-A或更好的CPU,因此除非您针对特定的设备,否则我不确定构建两个共享LIB有多大价值
更新:实际上有很多设备都配有较旧的CPU。所有高端产品都是ARMv7-A,但低端设备的容量很大
ARMv6+VFP不是Play Store支持的配置——其目标是使配置集尽可能小。您需要使用一个胖二进制文件,或者(听起来像是在做)仔细配置您的构建,并在Play Store中列出特定的设备。在拥有Galaxy S3的同时,为了支持Android 2.2+我购买了一个新的三星Galaxy Ace进行测试。它有ARMV6(和VFP)。由于我不知道没有VFP的ARMV6设备的列表,我无法做出决定。与此同时,我正在尝试从Android Play Store中过滤掉ARMV6 w/o VFP设备。我接受了这个答案,因为它确实解决了一个主要问题:我们能在软件上模拟VFP并使其比非VFP环境更快吗?答案是:现在什么是vfp?这是一种不同的体系结构吗?正如你所知,一些设备有一个芯片,可以进行浮点运算,这可以加快基于数学的过程,如编码/解码媒体。如果ARMv6设备上没有这种功能,我的应用程序将无法顺利运行,因为重浮点的软件计算将占用更多cpu,并会降低应用程序的速度。我试图找出是否有一种方法可以在软件方面模拟VFP,但据我所知,它并不存在,而且可能没有意义。我明白了。谢谢你教我这方面的知识。VFP代表什么?最后一个字可能是浮点,但V是什么?向量浮点好的,谢谢。很高兴知道。