종속성이있는 패키지를 가져 와서 설치하고 있으며이 경우 파일을 찾지 못하면 컴파일이 실패합니다 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 파일을 작성하고
—
Ainar-G
#include <magic.h>
C 컴파일러로 컴파일하십시오. 실패하지 않는 것은 흥미 롭습니다.
또한 전화해야 할 수도 있습니다
—
Ainar-G
brew link libmagic
( gist.github.com/eparreno/1845561 참조 ).