0

我正在为 Android 使用 libjpeg-turbo 端口。就源代码而言,它与基本 jpeg-turbo 没有太大区别:http ://git.linaro.org/gitweb?p=people/tomgall/libjpeg-turbo/libjpeg-turbo.git;a=shortlog;h=参考/头/机器人

有一个模块(静态库)由 2 个与 cpu 特性相关的文件组成:jsimd_arm_neon.S 和 jsimd_arm.c。我想编译带有 NEON 支持的 jpeg-turbo,我必须__ARM_HAVE_NEON使用-march=armv7-a -mfpu=neon. 我希望该库在不支持 Neon 的旧硬件(如 Tegra 2)上运行,我应该删除 neon 编译器标志和 undef __ARM_HAVE_NEON

我的问题是:如何编译它以便可以在运行时选择霓虹灯或非霓虹灯路径而无需SIGILL在非霓虹灯硬件上?我知道如何在运行时检查 NEON,但我不知道如何修改 libjpeg-turbo 和组织库。

4

1 回答 1

1

一个老问题,但无论如何我都会添加它以防万一。确实有人详细介绍过,其中一个问题是动态选择 NEON。这里解释:https ://stackoverflow.com/a/20697814/712413 。

相关部分是第 4 项,用于修改 init_simd() 方法中的一些行。

于 2014-04-21T02:09:59.833 回答