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


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 .
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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.