我如何查看在“ 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仍然存在。)


它没有发表评论,这是CGO的神奇评论。它在任何C编译器都会在其中寻找文件的位置。确保正确安装了libmagic。参见golang.org/cmd/cgo
Ainar-G 2015年

我使用brew卸载并重新安装了libmagic,它也安装了go。问题是如何摆脱困境。它使用的源文件与src树中的源文件不匹配-那么它是从哪里获得的呢?$ find〜/ go / src -name“ * .go” -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>>
timbl 2015年

您阅读了cgo链接吗?这是一个神奇的评论。Go编译器将其转换为对C编译器的调用,该调用继而失败,因为它找不到magic.h。尝试在其中创建一个C文件,#include <magic.h>然后使用C编译器进行编译。它不会失败,它会变得有趣。
Ainar-G 2015年

另外,您可能需要致电brew link libmagic(请参阅gist.github.com/eparreno/1845561)。
Ainar-G

Answers:


101

在问题包上运行go build -x:

go build -x github.com/presbrey/magicmime
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.