Comment puis-je voir les commandes de compilation internes qui échouent dans une installation «go get»?


126

Je tirais et l' installation d' un paquet avec des dépendances, et une compilation ne réussit pas, dans ce cas , ne pas trouver un fichier, magic.h. Comment voir quels étaient les commandes et les indicateurs de compilation? L' -voption n'aide pas. (Je ne veux PAS d'idées sur l'origine de magic.h, ce n'est qu'un exemple.)

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

Comment puis-je trouver, par exemple, où il recherchait des fichiers d'inclusion, quelle source exactement il compilait? (Dans ce cas, le fichier source que je vois dans $GO_PATH/srca ce #includecommentaire, et un /usr/local/include/match.hexiste de toute façon.)


Ce n'est pas commenté, c'est le commentaire magique d'un cgo. Il recherche le fichier où n'importe quel compilateur C le chercherait. Assurez-vous que vous avez correctement installé libmagic. Voir golang.org/cmd/cgo .
Ainar-G

J'ai désinstallé et réinstallé libmagic, en utilisant brew, qui a également installé go. La question est de savoir comment enlever le couvercle de ce que va faire. Le fichier source qu'il utilise ne correspond pas à celui de l'arborescence src - d'où vient-il donc? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> -note ligne commentée
timbl

Avez-vous lu le lien cgo? C'est un commentaire magique. Le compilateur Go traduit cela en un appel au compilateur C, qui échoue à son tour car il ne trouve pas magic.h. Essayez de créer un fichier C avec #include <magic.h>dedans et compilez avec un compilateur C. Cela n'échoue pas, cela devient intéressant.
Ainar-G

Vous devrez peut-être également appeler brew link libmagic(voir gist.github.com/eparreno/1845561 ).
Ainar-G

Réponses:


101

Exécutez go build -x sur le package de problème:

go build -x github.com/presbrey/magicmime
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.