依存関係のあるパッケージをプルしてインストールしていますが、コンパイルが失敗します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ファイルを作成
—
Ainar-G 2015
#include <magic.h>
して、Cコンパイラでコンパイルしてみてください。失敗しない、面白くなる。
また、呼び出す必要がある場合があります
—
Ainar-G 2015
brew link libmagic
(gist.github.com/eparreno/1845561を参照)。