Wie kann ich die internen Kompilierungsbefehle anzeigen, die bei einer "go get" -Installation fehlschlagen?


126

Ich ziehe ein Paket mit Abhängigkeiten und installiere es. Eine Kompilierung schlägt fehl. In diesem Fall wird keine Datei gefunden magic.h. Wie sehe ich die Kompilierungsbefehle und Flags? Die -vOption hilft nicht. (Ich möchte KEINE Ideen, woher man Magie bezieht. Dies ist nur ein Beispiel.)

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

Wie kann ich zum Beispiel herausfinden, wo nach Include-Dateien gesucht wurde, welche Quelle genau kompiliert wurde? (In diesem Fall hat die Quelldatei, die ich in sehe $GO_PATH/src, diese #includeauskommentiert, und eine /usr/local/include/match.hexistiert trotzdem.)


Es ist nicht kommentiert, es ist ein magischer Kommentar von cgo. Es sucht nach der Datei, in der jeder C-Compiler danach suchen würde. Stellen Sie sicher, dass Sie libmagic korrekt installiert haben. Siehe golang.org/cmd/cgo .
Ainar-G

Ich habe libmagic deinstalliert und neu installiert, unter Verwendung von Brew, das auch go installiert hat. Die Frage ist, wie man den Deckel abnimmt, was los ist. Die verwendete Quelldatei stimmt nicht mit der im src-Baum überein. Woher hat sie sie? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h >> -note auskommentierte Zeile
timbl

Hast du den cgo Link gelesen? Es ist ein magischer Kommentar. Der Go-Compiler übersetzt dies in einen Aufruf des C-Compilers, der wiederum fehlschlägt, weil er magic.h nicht finden kann. Versuchen Sie, eine C-Datei mit #include <magic.h>zu erstellen, und kompilieren Sie mit einem C-Compiler. Wenn das nicht scheitert, wird es interessant.
Ainar-G

Möglicherweise müssen Sie auch anrufen brew link libmagic(siehe gist.github.com/eparreno/1845561 ).
Ainar-G

Antworten:


101

Führen Sie go build -x für das Problempaket aus:

go build -x github.com/presbrey/magicmime
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.