Як я можу побачити внутрішні команди компіляції, які не вдаються в установці "go get"?


126

Я витягати і установку пакета з залежностями, і компіляція зазнає невдачі, в цьому випадку , не знайшовши файл, magic.h. Як я бачу, якими були команди компіляції та прапори? -vВаріант не допомагає. (Я не хочу ідеї про те, звідки взяти magic.h, це лише приклад.)

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

Як я можу знайти, наприклад, де він шукав файли включення, яке саме джерело він збирав? (У цьому випадку вихідний файл, який я бачу, $GO_PATH/srcмає це #includeпрокоментовано, а /usr/local/include/match.hіснує все одно.)


Це не коментується, це чарівний коментар ЦГО. Він шукає файл, де його шукав би будь-який компілятор C. Переконайтесь, що ви встановили libmagic правильно. Див. Golang.org/cmd/cgo .
Айнар-Г

Я видалив і перевстановив libmagic, використовуючи brew, який також встановлено. Питання в тому, як зняти кришку з того, що роблять. Вихідний файл, який він використовує, не відповідає файлу в дереві src - так звідки його взяти? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> -примітка коментується рядок
timbl

Ви читали посилання cgo? Це чарівний коментар. Компілятор Go перекладає це на виклик компілятора C, який, у свою чергу, не працює, оскільки не може знайти магію.h. Спробуйте створити файл C #include <magic.h>у ньому та компілюйте з компілятором C. Це, що не виходить з ладу, стає цікавим.
Айнар-Г

Також вам може знадобитися зателефонувати brew link libmagic(див. Gist.github.com/eparreno/1845561 ).
Айнар-Г

Відповіді:


101

Запустіть go build -x на проблемному пакеті:

go build -x github.com/presbrey/magicmime
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.