/etc/ld.so.conf詳解


/etc/ld.so.conf 此文件記錄了編譯時使用的動態庫的路徑,也就是加載so庫的路徑。 編輯這個文件 sudo gedit /etc/ld.so.conf。

    默認情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件,而通常通過源碼包進行安裝時,如果不
指定--prefix會將庫安裝在/usr/local目錄下,而又沒有在文件/etc/ld.so.conf中添加/usr/local/lib這個目錄>。這樣雖然安裝了源碼包,但是使用時仍然找不到相關的.so庫,就會報錯。也就是說系統不知道安裝了源碼包。
    對於此種情況有2種解決辦法:
(1)在用源碼安裝時,用--prefix指定安裝路徑為/usr/lib。這樣的話也就不用配置PKG_CONFIG_PATH
  (2) 直接將路徑/usr/local/lib路徑加入到文件/etc/ld.so.conf文件的中。在文件/etc/ld.so.conf中末尾直接添加:/usr/local/lib(這個方法給力!)

ldconfig
再來看看ldconfig這個程序,位於/sbin下,它的作用是將文件/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc/ld.so.cache以供使用,因此當安裝完一些庫文件,或者修改/etc/ld.so.conf增加了庫的新的搜索路徑,需要運>行一下ldconfig,使所有的庫文件都被緩存到文件/etc/ld.so.cache中,如果沒做,可能會找不到剛安裝的庫。

PKG_CONFIG_PATH:
最后說下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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM