
コンパイルしようとしています。骨密度ツールカスタマイズされたバージョンでlibav 11~/libav-11.8/build
Ubuntu 14.04でg ++ 4.8.4を使用してコンパイルしました。 bmdはg ++フラグでpkg-configを使用して構築されました。リンクフェーズでコンパイルが失敗したため、次のようにpkg-config出力をテストしました。
echo `pkg-config --cflags --libs libavcodec libavformat libswscale libavutil`
これは生産します
-I/usr/local/include -pthread -L/usr/local/lib -lavformat -lavcodec
-ldl -lasound -lz -lwscale -lavutil -lm
そこでカスタムビルド位置に設定されていない位置を計算して表示して-I
おきました。-L
設定PKG_CONFIG_PATH=~/libav-11.8/build/lib/pkgconfig
して再実行すると生成されます。
-Ibuild/include -pthread -Lbuild/lib ...<lib flags>
ビルドルートフォルダでg ++を実行すると、これは正しいです。 pkg-configは相対パスではなく絶対パスをチェックしてはいけませんか?この行動の根拠は何ですか?
答え1
読んだ後Freedesktop パッケージ構成ガイド私はpkg-configがバイナリ、ライブラリ、またはパスが正しいことを確認するために何もしなかったことに気づきました。ファイルにLibs
書き込まれたCflags
内容だけを吐き出します.pc
。
prefix
私の場合、libavのコンパイルプロセスによって生成されますconfigure
。
prefix
したがって、絶対パスに設定されたlibavを再コンパイルした後、pkg-configは他のプロジェクトのコンパイルに使用するのに適したフラグを出力します-I
。-L