2011-04-14 92 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