2012-03-12 108 views
2

我開發了一個針對android平臺的應用程序,它針對的是ARM處理器。它工作的很好。我想在運行在MIPS(32位)處理器上的Android上嘗試相同的應用程序。 - 編譯應用程序,但無法生成共享庫。我正在使用爲MIPS處理器定製的MIPS ndk和android源代碼。在生成靜態庫時,它不顯示任何錯誤,但在生成共享庫時,出現以下錯誤:針對MIPS處理器的交叉編譯

/home/user/android-ndk-r7m/toolchains/mips-linux-android-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/mips-linux-android/4.4。 3 /../../../../ mips-linux-android/bin/ld:/home/user/workspace/testing/ccl_obj/libccl.a(teccl_call_initiate.o):根據`__gnu_local_gp'重定位R_MIPS_HI16'不能使用wh製作共享對象;用-fPIC重新編譯 /home/user/workspace/testing/ccl_obj/libccl.a:無法讀取符號:錯誤值 collect2:ld返回1退出狀態 make:* [obj/local/mips-r2/libhello-jni.so]錯誤1

請提出任何解決方案。

謝謝

回答

0

該錯誤似乎表明該怎麼做。

編譯源代碼時,添加-fPIC編譯器標誌。

+0

但是這個標記已經在setup.mk文件中。 – Sujanian 2012-03-12 12:57:32

+0

你確定它正在使用? .c文件是否用-fPIC標誌編譯?你似乎有一些libccl.a,那是什麼?它看起來像一個靜態庫,與您創建的共享庫相比,它有什麼相關性? – nos 2012-03-12 13:06:05

+0

我沒有使用這個-fPIC標誌explicity編譯.c文件。在爲ARM編譯時它沒有顯示任何錯誤.libccl.a是編譯.c文件後創建的靜態庫。我的.so文件依賴於這個靜態庫。但它無法讀取這個文件。 – Sujanian 2012-03-13 11:18:50

-1

以防萬一,如果有人面對這個problem.run

make clean 
make 

我今天得到了類似的問題,並運行清潔解決我的問題。