對全部用戶有效在/etc/profile增長如下內容。只對當前用戶有效在Home目錄下的
.bashrc或.bash_profile裏增長下面的內容:
(注意:等號前面不要加空格,不然可能出現 command not found)
#在PATH中找到可執行文件程序的路徑。
export PATH =$PATH:$HOME/bin
#gcc找到頭文件的路徑
C_INCLUDE_PATH=/usr/include/libxml2:/MyLib
export C_INCLUDE_PATH
#g++找到頭文件的路徑
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib
export CPLUS_INCLUDE_PATH
#找到動態連接庫的路徑
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
export LD_LIBRARY_PATH
#找到靜態庫的路徑
LIBRARY_PATH=$LIBRARY_PATH:/MyLib
export LIBRARY_PATH
緩存
庫 文件在鏈接(靜態庫和共享 庫)和運行(僅限於使用共享庫的程序)時被使用,其搜索路徑是在系統中進行設置的。通常 Linux 系統把 /lib 和 /usr/lib 兩個目錄做爲默認的庫搜索路徑,因此使用這兩個目錄中的庫時不須要進行設置搜索路徑便可直接使用。對於處於默認庫搜索路徑以外的庫,須要將庫的位置添加到 庫的搜索路徑之中。設置庫文件的搜索路徑有下列兩種方式,可任選其一使用:bash
在環境變量 LD_LIBRARY_PATH 中指明庫的搜索路徑。post
在 /etc/ld.so.conf 文件中添加庫的搜索路徑。spa
將本身可能存放庫文件的路徑都加入到/etc/ld.so.conf中是明智的選擇xml
添加方法也極其簡單,將庫文件的絕對路徑直接寫進去就OK了,一行一個。例如:編譯
/usr/X11R6/libclass
/usr/local/lib效率
/opt/lib變量
需 要注意的是:第二種搜索路徑的設置方式對於程序鏈接時的庫(包括共享庫和靜態庫) 的定位已經足夠了,可是對於使用了共享庫的程序的執行仍是不夠的。這是由於爲了加快程序執行時對共享庫的定位速度,避免使用搜索路徑查找共享庫的低效率, 因此是直接讀取庫列表文件 /etc/ld.so.cache 從中進行搜索的。/etc/ld.so.cache 是一個非文本的數據文件,不能直接編輯,它是根據 /etc/ld.so.conf 中設置的搜索路徑由 /sbin/ldconfig 命令將這些搜索路徑下的共享庫文件集中在一塊兒而生成的(ldconfig 命令要以 root 權限執行)。所以,爲了保證程序執行時對庫的定位,在 /etc/ld.so.conf 中進行了庫搜索路徑的設置以後,還必需要運行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件以後才能夠。ldconfig ,簡單的說,它的做用就是將/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc/ld.so.cache 以供使用。所以當安裝完一些庫文件,(例如剛安裝好glib),或者修改ld.so.conf增長新的庫路徑後,須要運行一下 /sbin/ldconfig使全部的庫文件都被緩存到ld.so.cache中,若是沒作,即便庫文件明明就在/usr/lib下的,也是不會被使用 的,結果編譯過程當中抱錯,缺乏xxx庫,去查看發現明明就在那放着,搞的想大罵computer蠢豬一個。兼容性
在程序鏈接時,對於庫文件(靜態庫和共享庫)的搜索路徑,除了上面的設置方式以外,還能夠經過 -L 參數顯式指定。由於用 -L 設置的路徑將被優先搜索,因此在鏈接的時候一般都會以這種方式直接指定要鏈接的庫的路徑。
前 面已經說明過了,庫搜索路徑的設置有兩種方式:在環境變量 LD_LIBRARY_PATH 中設置以及在 /etc/ld.so.conf 文件中設置。其中,第二種設置方式須要 root 權限,以改變 /etc/ld.so.conf 文件並執行 /sbin/ldconfig 命令。並且,當系統從新啓動後,全部的基於 GTK2 的程序在運行時都將使用新安裝的 GTK+ 庫。不幸的是,因爲 GTK+ 版本的改變,這有時會給應用程序帶來兼容性的問題,形成某些程序運行不正常。爲了不出現上面的這些狀況,在 GTK+ 及其依賴庫的安裝過程當中對於庫的搜索路徑的設置將採用第一種方式進行。這種設置方式不須要 root 權限,設置也簡單:
$ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH
能夠用下面的命令查看 LD_LIBRAY_PATH 的設置內容:
$ echo $LD_LIBRARY_PATH
至此,庫的兩種設置就完成了。