2011-04-14 95 views
0

我试图用一个静态库时出现此错误:错误的Android使用静态库时,NDK

/home/user/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: 
skipping incompatible /home/user/android-ndk-r5b/apps/HelloNDK/obj/local/armeabi/libtest.a when searching for -ltest

在可能是什么问题?在此先感谢

UPDATE: 编译我已经做到了这一点:


PREBUILT=/home/user/android-ndk/build/prebuilt/linux-x86/arm-eabi-4.4.0 
PLATFORM=/home/user/android-ndk/build/platforms/android-3/arch-arm 
INSTALL=/home/user/test-14.3.2/com5 

./configure --build=arm \ 
    --prefix=$INSTALL \ 

    --with-flac=dyn \ 

--enable-static \ 



    CC=$PREBUILT/bin/arm-eabi-gcc \ 
    CFLAGS="-fPIC -DANDROID" \ 
    LDFLAGS="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl" 

有什么不对?

回答

1

你从链接器得到了一个提示:库似乎找到了,但跳过了不正确的。

你确定你用相同的编译器编译你的库吗?如果它是为另一个平台/另一个编译器编译的,则会出现ABI问题,并且链接器将放弃它,它看起来像这样做。

+0

我不确定。我在Linux下使用gcc进行编译(使用 - build = arm),并进行make和make install。你怎么办?如果是这样的话,那可能是我的错? (在接收到文件之后 - 将它扔到Android项目的文件夹中,obj) – Kyborg2011 2011-04-14 09:35:01

+0

你应该使用ndk来编译你的库,并且使用standrd gcc和-build = arm是不够的(例如rtti) – Bruce 2011-04-14 09:43:22

+0

我更新了有问题的代码。读。怎么了? – Kyborg2011 2011-04-14 10:01:11