Come posso vedere i comandi di compilazione interni che falliscono in un'installazione "go get"?


126

Sto estraendo e installando un pacchetto con dipendenze e una compilazione fallisce, in questo caso non trovo un file magic.h. Come posso vedere quali erano i comandi e i flag di compilazione? L' -vopzione non aiuta. (NON voglio idee su dove ottenere magic.h, questo è solo un esempio.)

$ 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 posso trovare, ad esempio, dove cercava i file di inclusione, quale fonte stava esattamente compilando? (In questo caso il file sorgente che vedo $GO_PATH/srcha #includecommentato e /usr/local/include/match.hesiste comunque un.)


Non è commentato, è un commento magico di un cgo. Cerca il file in cui qualsiasi compilatore C lo cercherebbe. Assicurati di aver installato libmagic correttamente. Vedi golang.org/cmd/cgo .
Ainar-G,

Ho disinstallato e reinstallato libmagic, usando brew, che ha anche installato go. La domanda è come togliere il coperchio da ciò che sta facendo. Il file sorgente che sta usando non corrisponde a quello dell'albero src - quindi da dove lo ha preso? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> -note commentato linea
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 <magic.h>al suo interno e compila con un compilatore C. Non fallisce, diventa interessante.
Ainar-G,

Inoltre, potrebbe essere necessario chiamare brew link libmagic(consultare gist.github.com/eparreno/1845561 ).
Ainar-G,

Risposte:


101

Esegui go build -x sul pacchetto problema:

go build -x github.com/presbrey/magicmime
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.