我目前使用-mfloat-abi=softfp -mfpu=vfp
我认为上述行需要ARMV6设备支持真正的VFP。
如果我使用-mfloat-abi=soft
该怎么办?如果没有真正的VFP支持,它会在ARMV6设备上运行,但是比甚至不指定mfloat-abi
更快吗?
(我不想用2 .so文件创建胖二进制文件)
答案 0 :(得分:0)
gcc信息页面说:
指定
soft
会导致GCC生成包含库的输出 调用浮点运算。softfp
允许 使用硬件浮点指令生成代码,但是 仍然使用soft-float调用约定。hard
允许 生成浮点指令并使用FPU特定的 召集会议。
因此,对于具有FPU的目标,使用soft
并不是您想要的。
目前大多数设备都有ARMv7-A或更好的CPU,因此,除非您针对特定设备,否则我不确定构建两个共享库有多大价值。
更新:实际上有很多设备都附带较旧的CPU。所有高端产品都是ARMv7-A,但低端设备的数量很多。
ARMv6 + VFP不是Play商店支持的配置 - 目标是使配置集尽可能小。您需要使用胖二进制文件,或者(因为它听起来像你正在做的)仔细配置您的构建并在Play商店中列出特定设备。