Jak mogę zobaczyć wewnętrzne polecenia kompilacji, które zawodzą podczas instalacji „pobierz”?


126

Ja ciągnięcie i instalując pakiet z zależnościami i kompilacja nie powiedzie się, w tym przypadku nie znalezienia pliku magic.h. Jak sprawdzić, jakie były polecenia i flagi kompilacji? Ta -vopcja nie pomaga. (NIE chcę pomysłów, skąd wziąć magię. H, to tylko przykład).

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

Jak mogę na przykład dowiedzieć się, gdzie szukał plików dołączanych, jakie dokładnie źródło kompilował? (W tym przypadku plik źródłowy, który widzę w, $GO_PATH/srcma to #includezakomentowane, a /usr/local/include/match.hmimo to istnieje).


To nie jest komentowane, to magiczny komentarz CGO. Szuka pliku, w którym szukałby go dowolny kompilator C. Upewnij się, że zainstalowałeś libmagic poprawnie. Zobacz golang.org/cmd/cgo .
Ainar-G,

Odinstalowałem i ponownie zainstalowałem libmagic, używając brew, który również zainstalował go. Pytanie brzmi, jak zdjąć pokrywę z tego, co robi. Plik źródłowy, którego używa, nie pasuje do tego w drzewie src - więc skąd go wziął? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> -note zakomentowany wiersz
timbl

Czy przeczytałeś link CGO? To magiczny komentarz. Kompilator Go tłumaczy to na wywołanie kompilatora C, które z kolei kończy się niepowodzeniem, ponieważ nie może znaleźć pliku magic.h. Spróbuj utworzyć plik C zawierający #include <magic.h>w nim plik i skompiluj go za pomocą kompilatora C. To nie zawodzi, robi się interesujące.
Ainar-G,

Być może będziesz musiał zadzwonić brew link libmagic(patrz gist.github.com/eparreno/1845561 ).
Ainar-G,

Odpowiedzi:


101

Uruchom go build -x na pakiecie problemowym:

go build -x github.com/presbrey/magicmime
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.