0

当我构建为静态库时,源代码在 Android JellyBean 4.1.2 中使用mm command. 但是当我尝试将 opencv 文件夹构建android/external/opencv静态库时,在android/external/opencv/Android.mk

+ 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

关于如何解决此错误的任何想法?

提前致谢。问候,杰

4

1 回答 1

2

,,, arm-linux-androideabi/bin/ld:thumb_branch_common 中的内部错误,位于 /tmp/android-8532/src/build/../binutils/binutils-2.21/gold/arm.cc:4148 collect2:ld 返回1 退出状态

关于如何解决此错误的任何想法?

在 Binutils 文件 arm.cc 中,第 4148 行存在内部错误(在 Binutils 中)。

尝试更新的 Binutils(或更旧的)或修复错误并提交补丁。

您也可以切换到不同的工具链(使用不同的 Binutils)并尝试。有时编译器开关会改变操作足以避免错误。

有可能只是更改您正在编译的代码的源文件中函数的顺序(不是gold/arm.cc,这是编译器错误所在,更改您的源),Binutils 将读取新订购的以不同的方式编码,从而避免 Binutils 错误。

您链接的代码(.o 文件)也可能在磁盘上或编译器中的错误损坏,或者它用于错误的字节序(等)并且未被检测到。

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

于 2013-06-05T04:15:51.250 回答