Как я могу увидеть внутренние команды компиляции, которые не работают при установке «иди и получи»?

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любом случае существует.)

timbl
источник
Это не комментируется, это волшебный комментарий руководства компании. Он ищет файл, в котором его будет искать любой компилятор C. Убедитесь, что вы правильно установили libmagic. См. Golang.org/cmd/cgo .
Ainar-G
Я удалил и переустановил libmagic, используя brew, который также установил go. Вопрос в том, как снять крышку, что делает go. Исходный файл, который он использует, не соответствует файлу в дереве src - так откуда он его взял? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> - закомментированная строка с
пометкой
Вы читали ссылку cgo? Это волшебный комментарий. Компилятор Go преобразует это в вызов компилятора C, который, в свою очередь, не работает, потому что не может найти magic.h. Попробуйте создать файл C с #include <magic.h>ним и скомпилировать его с помощью компилятора C. Это не подводит, становится интересно.
Ainar-G
Также вам может потребоваться позвонить brew link libmagic(см. Gist.github.com/eparreno/1845561 ).
Ainar-G

Ответы:

101

Запустите go build -x для проблемного пакета:

go build -x github.com/presbrey/magicmime
Джошуа
источник