2015-07-10 10 views
121

Sto prelevando e installando un pacchetto con dipendenze e una compilazione fallisce, in questo caso non trovando un file, magic.h. Come faccio a vedere quali sono i comandi e le bandiere di compilazione? L'opzione -v non aiuta. (Non voglio idee su dove trovare magic.h da, questo è solo un esempio.)Come posso vedere i comandi di compilazione interni che falliscono in un'installazione "go get"?

$ 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> 

Come faccio a trovare, per esempio, dove si era alla ricerca di file di inclusione, quale fonte esattamente stava compilando? (In questo caso il file di origine che vedo in $GO_PATH/src ha quel #include commentata, e un /usr/local/include/match.h esiste comunque.)

+0

Non è commentato, si tratta di un CGO di commento magico. Cerca il file in cui qualsiasi compilatore C lo cercherebbe. Assicurati di aver installato correttamente libmagic. Vedi http://golang.org/cmd/cgo/. –

+0

Ho disinstallato e reinstallato libmagic, usando brew, che ha anche installato go. La domanda è come togliere il coperchio a ciò che sta facendo. Il file sorgente che sta usando non corrisponde a quello nell'albero src - quindi da dove lo ha preso? $ find ~/go/src -name "* .go" -exec grep magic.h {} \; // #include // #include > -note commentato riga – timbl

+0

Hai letto il link cgo? È un commento magico. Il compilatore Go lo traduce in una chiamata al compilatore C, che a sua volta fallisce perché non riesce a trovare magic.h. Prova a creare un file C con '#include ' e compila con un compilatore C. Ciò non fallisce, diventa interessante. –

risposta

98

Run andare a costruire -x sulla confezione problema:

go build -x github.com/presbrey/magicmime 
+146

Hai appena aiutato l'uomo che ha inventato il WWW! – Hitz

+36

la meraviglia di SO ... – Joshua

Problemi correlati