2013-12-18 132 views
0

我正在鏈接預生成共享庫。我發現我的.so文件是64位和文件如下所示android ndk prebuild 64位的共享庫

[email protected]:/usr/local/lib$ file libspd.so.3.0.0 
libspd.so.3.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=0x1148c741ed5bf3568abd82ec33187b9cf9117cf5, not stripped 

信息,當我運行NDK建造,它給了我「incomabpatible目標」。如下所示

[email protected]:~/Projects/spd-viewer-on-android$ ndk-build 
[x86] Install  : libspdio.so => libs/x86/libspdio.so 
[x86] SharedLibrary : libhello-jni.so 
/home/li/Android/adt-bundle-linux-x86_64-20131030/android-ndk-r9b/toolchains/x86-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: error: ./obj/local/x86/libspdio.so: incompatible target 
collect2: ld returned 1 exit status 
make: *** [obj/local/x86/libhello-jni.so] Error 1 

這是我的ABI APP_ABI := x86

那麼,如何解決這個問題才能成功編譯第三方庫?

+0

爲了完整性,Android現在提供了64位。他們在2014年10月提供了10c NDK。在Android博客上查看[開發人員,啓動您的64位引擎](https://plus.google.com/+AndroidDevelopers/posts/XG1WmNDMe8H)。 – jww

回答

0

沒有Android系統是64位的,你的庫應該用32位編譯,最好用Android NDK工具鏈。

+0

謝謝,我用32位虛擬機來獲得32位共享庫 –

+0

對不起,我怕你走錯了路。您可以在64位Linux系統上編譯一個32位庫。但無論如何,你需要一個適用於Android的交叉編譯器。最簡單的方法是使用http://developer.android.com/tools/sdk/ndk/ –

+0

的NDK工具鏈非常感謝!我現在知道如何建立 –

相關問題