如何排除“ pkg-config –variable pc_path pkg-config”中列出的一些庫路徑?
我有 Ubuntu 14.04 從 12.04 升級到 dist-upgrades。我過去做過很多手動安裝,例如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
尋找的路徑?
通常 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
當然,你可以刪除。