如何解决;不兼容目标“;当使用Android NDK链接库时?
我想将我使用Android NDK编译器为arm编译的库与Android项目链接起来。但在编译时,我得到以下错误:如何解决;不兼容目标“;当使用Android NDK链接库时?,android,c++,compiler-errors,android-ndk,Android,C++,Compiler Errors,Android Ndk,我想将我使用Android NDK编译器为arm编译的库与Android项目链接起来。但在编译时,我得到以下错误: /home/android/android-ndk-r9/sources/libraryname/android/arm/lib/libname.so: incompatible target 我对库和链接的项目使用相同的编译器。我做错了什么 库是使用以下脚本生成的: NDK=/home/android/android-ndk-r9 SYSROOT=$NDK/platf
/home/android/android-ndk-r9/sources/libraryname/android/arm/lib/libname.so:
incompatible target
我对库和链接的项目使用相同的编译器。我做错了什么
库是使用以下脚本生成的:
NDK=/home/android/android-ndk-r9
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
./configure \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
make clean
make
make install
这是来自已编译库的objdump:
xa.o: file format elf32-i386
rw-r--r-- 0/0 47720 Aug 3 03:22 2014 xa.o
这是一个使用NDK的库中的objdump:
libopentut_la-functionalRegression.o: file format elf32-little
rw-r--r-- 0/0 206612 Aug 3 03:22 2014 libopentut_la-functionalRegression.o
如果您使用的是ANDROID Studio 确保在您的
build.gradle
中没有其他不需要的abi
例如,如果我的库.so
文件仅适用于32位,则
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
在我的
build.gradle
中,它将因此错误而失败。尝试手动执行此操作只是自找麻烦-您确实应该使用NDK build系统或其独立的工具链功能,或者至少尝试转储它正在使用的设置(NDK build V=1
),或者将结果文件与objdump或类似文件进行比较。