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