“go get”설치에 실패한 내부 컴파일 명령을 어떻게 볼 수 있습니까?


126

종속성이있는 패키지를 가져 와서 설치하고 있으며이 경우 파일을 찾지 못하면 컴파일이 실패합니다 magic.h. 컴파일 명령과 플래그가 무엇인지 어떻게 알 수 있습니까? 이 -v옵션은 도움이되지 않습니다. (나는 어디에서 magic.h를 얻을 수 있는지에 대한 아이디어를 원하지 않는다. 이것은 단지 예일 뿐이다.)

$ go get -u github.com/presbrey/magicmime
# github.com/presbrey/magicmime
../../../src/github.com/presbrey/magicmime/magicmime.go:20:11: fatal error:   'magic.h' file not found
#include <magic.h>

예를 들어 포함 파일을 찾는 위치, 정확히 어떤 소스 를 컴파일 했는지 어떻게 수 있습니까? (이 경우 내가 본 소스 파일 $GO_PATH/src#include주석 처리되었으며 /usr/local/include/match.h어쨌든 존재합니다.)


그것은 언급되지 않았으며 cgo의 마술 주석입니다. C 컴파일러가 찾을 파일을 찾습니다. libmagic을 올바르게 설치했는지 확인하십시오. golang.org/cmd/cgo를 참조하십시오 .
Ainar-G

brew를 사용하여 libmagic을 제거했다가 다시 설치했습니다. 문제는 무엇을하고 있는지 뚜껑을 벗기는 방법입니다. 사용중인 소스 파일이 src 트리에있는 소스 파일과 일치하지 않습니다. $ find ~ / go / src -name "* .go"-exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> -note 코멘트 라인
timbl

cgo 링크를 읽었습니까? 마법의 의견입니다. Go 컴파일러는이를 C 컴파일러 호출로 변환하며, 이는 magic.h를 찾을 수 없기 때문에 실패합니다. 그 안에 C 파일을 작성하고 #include <magic.h>C 컴파일러로 컴파일하십시오. 실패하지 않는 것은 흥미 롭습니다.
Ainar-G

또한 전화해야 할 수도 있습니다 brew link libmagic( gist.github.com/eparreno/1845561 참조 ).
Ainar-G

답변:


101

문제 패키지에서 go build -x를 실행하십시오.

go build -x github.com/presbrey/magicmime
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.