「pkg-config --variable pc_path pkg-config」にリストされている特定のライブラリパスを除外する方法は?

「pkg-config --variable pc_path pkg-config」にリストされている特定のライブラリパスを除外する方法は?

12.04でUbuntu 14.04をアップグレードし、distアップグレードを実行しました。過去にはffmpeg、libglibなど手動でたくさんインストールしました。今は素晴らしいカスタムディストリビューションがあり、うまくいきますが、アプリケーションのコンパイルに問題があります。これは、ソースコードに手動でインストールされたパッケージとデフォルトの配布ライブラリとの間のライブラリの競合が原因で発生します。一人が名前を変更するよう提案しましたが、/usr/local次回再起動したときに起動に失敗しました。

pkg-configwithによって追加されたディレクトリを見つけるとき

  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_PATHUbuntuで異なることがわかりました。前者は長く包括的であり、後者は短くて排他的です。 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変更してもう一度やり直してください。-lasoundLibs:-foobar$PKG_CONFIG_PATH

> PKG_CONFIG_PATH=/opt/bs/pkg pkg-config --libs alsa
-foobar

ユーレカ、$PKG_CONFIG_PATH組み込み経路はすでに上書きされています。/opt/bs/pkgもちろん削除することもできます。

おすすめ記事