2013-04-29 2 views
0

정적 라이브러리로 빌드 할 때 소스 코드는 mm command을 사용하는 Android JellyBean 4.1.2에서 잘 빌드됩니다. 하지만 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/external/opencv정적 라이브러리 아래의 OpenCV의 폴더를 빌드 할 때 :

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 

이 오류를 해결하는 방법에 대한 아이디어가 있으십니까?

미리 감사드립니다. 감사합니다, Binutils의 파일 arm.cc, 라인 (4148)에서

답변

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의)에서 내부 오류가 발생했습니다.

더 새로운 Binutils (또는 이전 버전)를 시도하거나 버그를 수정하고 패치를 제출하십시오.

다른 툴체인 (다른 Binutils 사용)으로 전환하고 시도해 볼 수도 있습니다. 가끔은 컴파일러 스위치가 버그를 피하기 위해 동작을 충분히 바꿀 것입니다.

은 컴파일 단순히 코드의 소스 파일 에서 함수의 순서를 변경 가능성이 것을 (NOT 금/arm.cc, 즉 컴파일러 버그이고, 소스를 변경 입니다) Binutils는 새로 주문한 코드를 과 다르게 읽을 것이므로 Binutils 버그를 피할 것입니다.

당신이 (.o 만 파일)에 연결되어있는 코드가 디스크 나 컴파일러의 버그 중 하나 를 손상된 것도 가능하다, 또는 잘못된 엔디안 (등)이며, 그 것을 감지되지 않습니다.

추신 : (컴파일러의 툴체인에서) 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

관련 문제