12.04でUbuntu 14.04をアップグレードし、distアップグレードを実行しました。過去にはffmpeg、libglibなど手動でたくさんインストールしました。今は素晴らしいカスタムディストリビューションがあり、うまくいきますが、アプリケーションのコンパイルに問題があります。これは、ソースコードに手動でインストールされたパッケージとデフォルトの配布ライブラリとの間のライブラリの競合が原因で発生します。一人が名前を変更するよう提案しましたが、/usr/local
次回再起動したときに起動に失敗しました。
pkg-config
withによって追加されたディレクトリを見つけるとき
pkg-config --variable pc_path pkg-config
それはリストされています
/usr/local/lib/i386-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
道を探したくない/usr/local/lib...
pkg-config
検索が許可されていないパスを無効にするにはどうすればよいですか?
答え1
のコンテンツは/usr/local
一般的にのコンテンツを置き換えるので、/usr
「良いカスタム配布」を得るためにライブラリをインストールしたいが、これについてコンパイルしたくない理由が少し混乱しています。これはシステムが実際に使用するライブラリです。
とにかくman pkg-config
デフォルトの検索パスを宣言します。
libdir/pkgconfig:datadir/pkgconfig です。ここで図書館ディレクトリpkg-configのlibdir データディレクトリ pkg-config の datadir です。インストールされたら。
つまり、その中にコンパイルされていることを意味します。私はこれがFedoraと$PKG_CONFIG_PATH
Ubuntuで異なることがわかりました。前者は長く包括的であり、後者は短くて排他的です。 Fedoraでは/usr/local
。
$PKG_CONFIG_PATH
ルートを確認したので最初、以下を設定できます。
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
これが組み込みパスの終わりにあるという事実は重要ではありません。検査がそこに到着したときに何も見つからないと、何も見つかりません。
これがどのように機能するかを示すために一時ディレクトリを作成し、デフォルトパス/opt/bs/pkg
の.pc
ディレクトリの1つからファイルをコピーします。たとえば、alsa.pc
.check最初。
> pkg-config --libs alsa
-lasound
今すぐ入力し(フィールドにあります).setに/opt/bs/pkg/alsa.pc
変更してもう一度やり直してください。-lasound
Libs:
-foobar
$PKG_CONFIG_PATH
> PKG_CONFIG_PATH=/opt/bs/pkg pkg-config --libs alsa
-foobar
ユーレカ、$PKG_CONFIG_PATH
組み込み経路はすでに上書きされています。/opt/bs/pkg
もちろん削除することもできます。