2013-03-23 3 views
1

C 코드를 호출하는 Go 패키지를 작성하고 있습니다. 나는 호스트 링커를 호출해야하지만 불행히도 -hostobj 플래그를 추가하는 것은 나에게 다음과 같은 오류 제공 :Go - LDFLAGS : -w -hostobj가 오류를 발생합니다.

gcc: error: unrecognized option ‘-h’ 

운영 체제 리눅스, 건축 AMD64입니다. 내가 잘못 뭐하는 거지

// #cgo CFLAGS: -I. -fPIC 
// #cgo LDFLAGS: -lstdc++ -w -hostobj -L. libsomething.a 
// #include "something.h" 
// #include <stdlib.h> 

: 여기

는 모든 플래그입니까?

+0

'-hostobj' 플래그는 무엇을해야합니까? gcc 또는 ld 매뉴얼 페이지에서 찾지 못했습니다. (그리고'-w'는 이상하게 보입니다.) – Mat

+0

제가 맞는지 모르겠지만 Go Linker에게 호스트의 링커를 사용하도록 알려줍니다. http://code.google.com/p/go/issues/detail?id=4069 –

답변

1

Go 소스 저장소 default 분기 tip에서 -linkmode이 아니라 -hostobj을 사용하십시오. 예 : -linkmode=external.

Issue 4069: cmd/ld: invoke host linker for cgo build은 수정되지 않은 것으로 표시되었습니다.

+0

저는 hg (revision + 1405be4b6fc4)에서 빌드를 사용하고 있습니다. LDFLAGS에 추가하면'/ usr/bin/ld : -linkmode = external'을 찾을 수 없습니다. 만약''install -ldflags "-linkmode = external"'을 실행하면 컴파일되지만,'-hostobj'도 불평하지 않기 때문에 무시당하는 것 같아요. 플래그가 사용되고 있음을 어떻게 확인할 수 있습니까? –