Linux

如何排除“ pkg-config –variable pc_path pkg-config”中列出的一些庫路徑?

  • July 17, 2014

我有 Ubuntu 14.04 從 12.04 升級到 dist-upgrades。我過去做過很多手動安裝,例如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尋找的路徑?

通常 in的東西/usr/local會取代/usr. 這些是系統將實際使用的庫。

無論如何,man pkg-config聲明基本搜尋路徑:

是 libdir/pkgconfig:datadir/pkgconfig 其中libdir是 pkg-config 的 libdir, datadir 是 pkg-config安裝時的 datadir。

這意味著它們是編譯進去的。我注意到它在 ubuntu 上與 fedora 不同——前者長且包含,而後者短且獨占;在 Fedora 上我必須設置一個$PKG_CONFIG_PATH包含/usr/local.

由於首先$PKG_CONFIG_PATH檢查路徑,您可以設置:

PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

這些位於內置路徑末尾的事實並不重要。如果支票到達那里而沒有找到任何東西,那就什麼也找不到了。


為了展示這是如何工作的,創建一個臨時目錄/opt/bs/pkg並將.pc文件從預設路徑中的一個目錄複製到其中 - 例如,alsa.pc. 首先檢查;

> pkg-config --libs alsa
-lasound

現在進入/opt/bs/pkg/alsa.pc並將-lasound(它在Libs:現場)更改為-foobar. 設置並重$PKG_CONFIG_PATH試:

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

Eureka,$PKG_CONFIG_PATH已經覆蓋了內置路徑……/opt/bs/pkg當然,你可以刪除。

引用自:https://unix.stackexchange.com/questions/145095