今天编译Android doubango,arm64顺利编译出来了,可是armv7-a/armv7-a-neon死活不出来。难道是NDK问题?吾换了多个NDK,依然不行。看来不是这个问题。
仔细观察输出信息:
Toolchain installed to /home/quantum6/nanjing/doubango/my-android-toolchain-android-armv7-a. checking for arm-linux-androideabi-gcc... /home/quantum6/nanjing/doubango/my-android-toolchain-android-armv7-a/bin/arm-linux-androideabi-gcc checking whether the C compiler works... no
一查,目录下只有my-android-toolchain-android-arm64,没有armv7-a。说明了什么?说明哪里出错了,没有找到交叉编译链。问题出在哪里?应该是出在NDK版本上,新版本实际上不支持此类编译了。怎么解决呢?吾检查configure,发现以下内容:
arm64) export ANDROID_PREFIX=aarch64-linux-android export SYSROOT=$NDK/platforms/android-21/arch-arm64 export ANDROID_TOOLCHAIN=$(pwd)/my-android-toolchain-android-arm64 $NDK/build/tools/make-standalone-toolchain.sh --arch=arm64 --platform=android-21 --install-dir=$ANDROID_TOOLCHAIN export CFLAGS='-DANDROID=1 -D__ARMEL__' TARGET_ARCH="arm" ;; armv7-a) export ANDROID_PREFIX=arm-linux-androideabi export SYSROOT=$NDK/platforms/android-3/arch-arm export ANDROID_TOOLCHAIN=$(pwd)/my-android-toolchain-android-armv7-a $NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --arch=arm --install-dir=$ANDROID_TOOLCHAIN export CFLAGS='-march=armv7-a -mfloat-abi=softfp -DANDROID=1 -D__ARMEL__' export LDFLAGS='-Wl,--fix-cortex-a8' TARGET_ARCH="arm"
大哥什么时代了,还android-3?configure是autogen.sh产生的。这个咱就有解决办法了:
打开configure.ac,把android-3修改为android-19。再次运行.autogen.sh进行编译即可。
吾已将此修改上传到开源库。
https://github.com/quantum6/doubango-quantum6