歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux LD_LIBRARY_PATH學習

Linux LD_LIBRARY_PATH學習

日期:2017/2/28 14:37:20   编辑:Linux教程

1. LD_LIBRARY_PATH是什麼?
LD_LIBRARY_PATH是linux系統中一個非常重要的環境變量。
linux會從這個環境變量給定的路徑去搜索shared libraries,所以如果你的.so文件所在的path沒有加到LD_LIBRARY_PATH中,那麼所有需要這個so的程序就無法運行。
echo $LD_LIBRARY_PATH可以查看這個環境變量的值。

2. 如何將你需要的.so的path增加到LD_LIBRARY_PATH中?
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_path
通常有以下幾種辦法:
(1) 在你的shell下面直接去增加需要的path,不過這種辦法在你reboot系統之後會丟失;
(2)直接改在/etc/profile中,因為linux是多用戶操作系統,所以這種改動的話會對所有的用戶有效。以此例來講雖然影響到所有用戶可能不會產生太大的影響,但是除非真的是所有用戶都需要這種改動,否則本人不建議這樣改。
為什麼?
因為軟件大概可以分成不可客制化部分(公共流程)加上客制化部分兩個部分,如果這本身就是客制化部分需要去解決的問題,又為什麼要放到公共流程中來做呢?從軟件維護的角度來看,這會給維護帶來風險。
你必須要很清楚你的軟件中哪些可以歸類到可客制化部分,哪些應該要歸類到不可客制化部分。所以,我們有了方法(3)。
(3)放到用戶自己的配置文件中,以此例來講我們可以在~/.bash_profile或者~/.bashrc等用戶自己的客制化文件中去客制化
LD_LIBRARY_PATH這個環境變量。

3. ./test: error while loading shared libraries: libcurl.so: cannot open shared object file: No such file or directory
出現上述錯誤的原因是什麼?
通常如果出現上述錯誤,首先要檢查libcurl.so是否存在。
如果你不清楚系統中.so文件的存放位置,那就在系統根目錄下面查找吧,find ./ -name "libcurl.so",不過查找過程可能會比較久。
如果找不到libcurl.so,那就找到這個.so並整合到你的系統中;
如果能找到libcurl.so,那就echo $LD_LIBRARY_PATH看一下,不出意外的話,你的libcurl.so所在的path應該沒有包含在LD_LIBRARY_PATH中。

淺析 Linux LD_LIBRARY_PATH http://www.linuxidc.com/Linux/2013-08/88243.htm

Copyright © Linux教程網 All Rights Reserved