2013-04-29 100 views
0

當我構建爲靜態庫時,源代碼使用mm command在Android JellyBean 4.1.2中生成良好。但是,當我嘗試建立OpenCV的文件夾下android/external/opencv靜態庫,有以下變化android/external/opencv/Android.mkAndroid OpenCV共享庫生成錯誤

+ LOCAL_SHARED_LIBRARIES+= libdl 

- include $(BUILD_STATIC_LIBRARY) 
+ include $(BUILD_SHARED_LIBRARY) 

- LOCAL_STATIC_LIBRARIES := libcxcore libcv libcvaux libcvml libcvhighgui 
+ LOCAL_SHARED_LIBRARIES := libcxcore libcv libcvaux libcvml libcvhighgui 

我收到以下錯誤:

android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: internal error in thumb_branch_common, at /tmp/android-8532/src/build/../binutils/binutils-2.21/gold/arm.cc:4148 
collect2: ld returned 1 exit status 
make: *** [out/target/product/mydevice/obj/SHARED_LIBRARIES/libcxcore_intermediates/LINKED/libcxcore.so] Error 1 

有關如何解決此錯誤的任何想法?

在此先感謝。 問候, 潔

回答

2

,,, arm-linux-androideabi/bin/ld: internal error in thumb_branch_common, at /tmp/android-8532/src/build/../binutils/binutils-2.21/gold/arm.cc:4148 collect2: ld returned 1 exit status

Any idea on how to fix this error?

在Binutils的,文件arm.cc,4148線有一個內部錯誤(在Binutils的)。

嘗試更新的Binutils(或更舊)或修復Bug並提交修補程序。

您也可以切換到不同的工具鏈(使用不同的Binutils)和 試試。有時候,編譯器開關會改變操作,以至於不能使用這個Bug。

有機會的話,簡單地改變功能的順序代碼的源文件 正在編譯(不是黃金/ arm.cc,那就是編譯器的Bug, 變更來源)和Binutils會以不同的方式讀取新訂購的代碼 ,從而避免Binutils Bug。

也有可能您正在鏈接的代碼(.o文件)在磁盤上或編譯器中的Bug中損壞了 ,或者錯誤代碼爲 (等),那就是未被檢測到。 PS:Thumb-2代碼(在編譯器的工具鏈中)不是免費的(正如你注意到的那樣)。

看到這裏的一些人正在進行修復: http://git.openembedded.org/openembedded-core-contrib/commit/?h=kraj/gold&id=b72f3238ad32ab420306a0226d8c2e57c52ddf45

...這是他們來幹什麼了: http://sourceware.org/bugzilla/attachment.cgi?id=6284&action=diff