Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以为ARMV6编译Android库,也可以选择使用VFP?_Android_Android Ndk_Armv6 - Fatal编程技术网

是否可以为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是什么?向量浮点好的,谢谢。很高兴知道。