我正在为 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 和组织库。