2016-07-15 3 views
7

CGO의 사용과 이동 프로그램을 빌드하는 동안 내가 얻을 오류CGO 오류 인식 재배치 (0x2a)

/usr/lib/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 
/usr/bin/ld: /tmp/go-link-373355991/000002.o: unrecognized relocation (0x2a) in section `.text' 
/usr/bin/ld: final link failed: Bad value 
collect2: error: ld returned 1 exit status 

그 문제를 Google에 시도 발견 데비안과 우분투에 몇 가지 버그 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808205) libc6 (2.21) 버전의 C 컴파일러와 링커는 내가 사용하는 버전 (2.19)보다 새로운 버전입니다.

또한 C 프로그램을 컴파일하는 데 문제가 있으며 C로 예제를 성공적으로 컴파일하는 것에 대해 언급했습니다.

동일한 시스템 및 라이브러리 버전으로 다른 시스템에서 Go 프로그램을 빌드하려고 시도했지만 빌드가 성공했습니다.

+0

그것은 월 : 수출 PATH =는/usr/bin에 의해 ccache 전용 경로를 제거하여 경로를 편집 단순히 ccache -C 나 :

그래서 ccache을 취소하려고 코드를 게시하면 질문에 쉽게 대답 할 수 있습니다. 또한 빌드가 성공한 아키텍처 및 OS 유형은 무엇입니까? – ijt

+1

GLFW와 동일한 문제가 있지만 C++/c를 사용하면 컴파일 할 때 사용한 컴파일러의 버전이 내가 링크 한 라이브러리를 컴파일하는 데 사용한 버전과 다름을 알 수있었습니다. – snb

답변

1

ccache를 사용하고 있지 않은지 확인하십시오. ie : echo $ PATH /usr/local/ccache 경로와 같은 것이 처음이라면 ...주의하십시오! ccache 캐시를 사용하여 컴파일 시간을 최적화합니다. 첫 번째 컴파일러로 lib를 빌드하고 다른 컴파일러로 컴파일하려고하면 이러한 재배치 문제가 발생합니다. ...

++ Thilas