動態庫的路徑/etc/ld.so.conf

/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

相關文章
相關標籤/搜索