/etc/ld.so.conf文件介紹緩存
/etc/ld.so.conf 此文件記錄了編譯時使用的動態庫的路徑,也就是加載so庫的路徑。編輯器
默認狀況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件,而一般經過源碼包進行安裝時,若是不指定--prefix會將庫安裝在/usr/local目錄下,而又沒有在文件/etc/ld.so.conf中添加/usr/local/lib這個目錄。這樣雖然安裝了源碼包,可是使用時仍然找不到相關的.so庫,就會報錯。也就是說系統不知道安裝了源碼包。ide
www.2cto.com ip
對於此種狀況有2種解決辦法:get
(1)在用源碼安裝時,用--prefix指定安裝路徑爲/usr/lib。這樣的話也就不用配置PKG_CONFIG_PATH編譯器
(2) 直接將路徑/usr/local/lib路徑加入到文件/etc/ld.so.conf文件的中。在文件/etc/ld.so.conf中末尾直接添加:/usr/local/lib(這個方法給力!)源碼
ldconfigit
再來看看ldconfig這個程序,位於/sbin下,它的做用是將文件/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc/ld.so.cache以供使用,所以當安裝完一些庫文件,或者修改/etc/ld.so.conf增長了庫的新的搜索路徑,須要運行一下ldconfig,使全部的庫文件都被緩存到文件/etc/ld.so.cache中,若是沒作,可能會找不到剛安裝的庫。io
PKG_CONFIG_PATH: www.2cto.com 編譯
最後說下PKG_CONFIG_PATH這個環境變量,它是在安裝了pkg-config後出現的
其實pkg-config就是向configure程序提供系統信息的程序,好比軟件的版本啦,庫的版本啦,庫的路徑啦,等等
這些信息只是在編譯其間使用。你能夠 ls /usr/lib/pkgconfig 下,會看到許多的*.pc,用文本編輯器打開
會發現相似下面的信息:
prefix=/usr
exec_prefix=$
libdir=$/lib
includedir=$/include
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: GLib
Description: C Utility Library
Version: 2.4.7
Libs: -L$ -lglib-2.0
Cflags: -I$/glib-2.0 -I$/glib-2.0/include
明白了吧,configure就是靠這些信息判斷你的軟件版本是否符合要求。而且獲得這些東東所在的位置,要不去×××呀。
不用我說你也知道爲何會出現上面那些問題了吧。
因此要正確配置這個環境變量,個人配置是:
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig