今天编译一个so文件时出现如下错误:
</pre><pre code_snippet_id="1586490" snippet_file_name="blog_20160224_3_8218863" name="code" class="plain">process_begin: CreateProcess(NULL, D:/Work/android-sdk/android-ndk-r10/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi/objs/xl_thunder_iface/src/com_xunlei_downloadlib_XLLoader.o.d -fno-exceptions -fno-rtti -Ijni/inc -ID:/Work/android-sdk/android-ndk-r10/sources/cxx-stl/system/include -Ijni -DANDROID -O2 -MD -DLINUX -D_ANDROID_LINUX -DMOBILE_PHONE -DDOWNLOAD_PLATFORM_PROJ_BT_EMULE -Wa,--noexecstack -Wformat -Werror=format-security -c jni/src/com_xunlei_downloadlib_XLLoader.cpp -o ./obj/local/armeabi/objs/xl_thunder_iface/src/com_xunlei_downloadlib_XLLoader.o, ...) failed. make (e=2): 系统找不到指定的文件。
后来发现原来是D:/Work/android-sdk/android-ndk-r10/toolchains/arm-linux-androideabi-4.9 这个目录不存在, 电脑中的ndk-r10所包含的toolchains 中的arm-linux-androideabi 版本最大为arm-linux-androideabi-4.8 没有arm-linux-androideabi-4.9, 所以报出make (e=2): 系统找不到指定的文件这个错误。
这个命令之所以用arm-linux-androideabi-4.9 是因为工程中的Application.mk中设置了这个值:
NDK_TOOLCHAIN_VERSION=4.9
把它改为:NDK_TOOLCHAIN_VERSION=4.8就能正常编译了。