「取得」インストールで失敗する内部コンパイルコマンドを確認するにはどうすればよいですか?


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

libmagicをアンインストールして、brewを使用して再インストールしました。問題は、何をしているのかを明らかにする方法です。使用しているソースファイルがsrcツリーのソースファイルと一致していません-どこから取得したのですか?$ find〜/ go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> -note commented out line
timbl

cgoリンクを読みましたか?それは魔法のコメントです。GoコンパイラーはそれをCコンパイラーへの呼び出しに変換し、magic.hが見つからないために失敗します。でCファイルを作成#include <magic.h>して、Cコンパイラでコンパイルしてみてください。失敗しない、面白くなる。
Ainar-G 2015

また、呼び出す必要がある場合がありますbrew link libmagicgist.github.com/eparreno/1845561を参照)。
Ainar-G 2015

回答:


101

問題のあるパッケージでgo build -xを実行します。

go build -x github.com/presbrey/magicmime
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.