Я извлекаю и устанавливаю пакет с зависимостями, и компиляция не выполняется, в этом случае не удается найти файл 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 с
—
Ainar-G
#include <magic.h>
ним и скомпилировать его с помощью компилятора C. Это не подводит, становится интересно.
Также вам может потребоваться позвонить
—
Ainar-G
brew link libmagic
(см. Gist.github.com/eparreno/1845561 ).