更新:我注意到,控制台输出是给我:错误建设有NDK Android项目:在通用ELF重定位(EM:40)
Error while executing 'C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\ndk-build.cmd' with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=C:\Users\bowli\Documents\Projects\AndroidStudioProjects\CDP_AR1\app\src\main\jni\Android.mk NDK_APPLICATION_MK=C:\Users\bowli\Documents\Projects\AndroidStudioProjects\CDP_AR1\app\src\main\jni\Application.mk APP_ABI=mips NDK_ALL_ABIS=mips NDEBUG=1 APP_PLATFORM=android-14 NDK_OUT=C:/Users/bowli/Documents/Projects/AndroidStudioProjects/CDP_AR1/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=C:\Users\bowli\Documents\Projects\AndroidStudioProjects\CDP_AR1\app\build\intermediates\ndkBuild\debug\lib C:/Users/bowli/Documents/Projects/AndroidStudioProjects/CDP_AR1/app/build/intermediates/ndkBuild/debug/obj/local/mips/libcdpp_jni.so}
通知
APP_ABI=mips NDK_ALL_ABIS=mips
它出现Android.mk和Application.mk的值在某处被覆盖。现在我要试着找出它发生的地方。
BASE问题:
我尝试建立与所提供的本地库的Android应用程序:升压,MetaIO等的应用程序是全功能的,我应该只是一个新的功能添加到它。然而,当我试图建立它,我得到以下错误:
Error:process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
process_begin: CreateProcess(NULL, "", ...) failed.
C:/Users/bowli/Tools/Android/android-ndk/android-ndk-r8e/toolchains/mipsel-linux-android-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/mipsel-linux-android/4.6/../../../../mipsel-linux-android/bin/ld.exe: C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\sources/boost/android/lib/libboost_filesystem.a(path.o): Relocations in generic ELF (EM: 40)
C:/Users/bowli/Tools/Android/android-ndk/android-ndk-r8e/toolchains/mipsel-linux-android-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/mipsel-linux-android/4.6/../../../../mipsel-linux-android/bin/ld.exe: C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\sources/boost/android/lib/libboost_filesystem.a(path.o): Relocations in generic ELF (EM: 40)
*the same line over9000 times (around 40 actually)*
C:/Users/bowli/Tools/Android/android-ndk/android-ndk-r8e/toolchains/mipsel-linux-android-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/mipsel-linux-android/4.6/../../../../mipsel-linux-android/bin/ld.exe: C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\sources/boost/android/lib/libboost_filesystem.a(path.o): Relocations in generic ELF (EM: 40)
C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\sources/boost/android/lib/libboost_filesystem.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [C:/Users/bowli/Documents/Projects/AndroidStudioProjects/CDP_AR1/app/build/intermediates/ndkBuild/debug/obj/local/mips/libcdpp_jni.so] Error 1
我绝不是与本地开发和配置这方面的专家,但是在网上冲浪导致我这个结论是boost并没有为我正在编译的相同体系结构编译。因此,我尝试了所有更改Application.mk中的ABI来找出boost目标体系结构。我尝试了支持的ABI列表(https://developer.android.com/ndk/guides/abis.html)中的所有ABI,并且都产生相同的错误。
然后我试图更改一个专门对ARMv7(https://github.com/emileb/Boost-for-Android-Prebuilt)编译给定的Boost库,但是这给了我本质上是相同的错误:
C:/Users/bowli/Tools/Android/android-ndk/android-ndk-r8e/toolchains/mipsel-linux-android-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/mipsel-linux-android/4.6/../../../../mipsel-linux-android/bin/ld.exe: C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\sources/boost/armeabi-v7a/lib/libboost_filesystem-gcc-mt-1_53.a(path.o): Relocations in generic ELF (EM: 40)
C:\Users\bowli\Tools\Android\android-ndk\android-ndk-r8e\sources/boost/armeabi-v7a/lib/libboost_filesystem-gcc-mt-1_53.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [C:/Users/bowli/Documents/Projects/AndroidStudioProjects/CDP_AR1/app/build/intermediates/ndkBuild/debug/obj/local/mips/libcdpp_jni.so] Error 1
我Application.mk :
APP_ABI := armeabi-v7a
APP_STL := gnustl_static
APP_CPPFLAGS := -fexceptions
APP_CPPFLAGS += -fpermissive
APP_CPPFLAGS += -frtti
另外我不得不指定:
TARGET_ARCH_ABI := armeabi-v7a
在我的Android.mk中,否则它想为某些原因建立mips。