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.)
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/. –
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
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. –