linux設定LD_LIBRARY_PATH變數

weixin_33816946發表於2014-04-18



在 Linux 下,如果你寫好了自己的動態連結庫,需要在其它程式裡呼叫,則需要讓這些程式能找到這些動態連結庫。如果設定不對,會出現類似如下的錯誤:

test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory

這是因為沒有把動態連結庫的安裝路徑(例如說是 /usr/local/lib )放到變數 LD_LIBRARY_PATH 裡。

這時,可以用命令 export 來臨時測試確認是不是這個問題:

export LD_LIBRARY_PATH=/usr/local/lib

在終端裡執行上面這行命令,再執行這個可執行檔案,如果執行正常就說明是這個問題。

接下來的問題是:以上做法,只是臨時設定變數 LD_LIBRARY_PATH ,下次開機,一切設定將不復存在;如何把這個值持續寫到 LD_LIBRARY_PATH 裡呢?

我們可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 語句,前者在每次登陸和每次開啟 shell 都讀取一次,後者只在登陸時讀取一次。我的習慣是加到 ~/.bashrc 中,在該檔案的未尾,可採用如下語句來使設定生效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

修改完後,記得關掉當前終端並重新開啟一個新的終端,從而使上面的配置生效。

 

LD_LIBRARY_PATH: 動態庫的查詢路徑

設定:

方法一: export  LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出後就失效

方法二:  修改~/.bashrc或~/.bash_profile或系統級別的/etc/profile

                  1. 在其中新增例如export PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH

                  2. source .bashrc  (Source命令也稱為“點命令”,也就是一個點符號(.)。source命令通常用於重新執行剛修改的初始化檔案,使之立即生效,而不必登出並重新登入)

方法三:這個沒有修改LD_LIBRARY_PATH但是效果是一樣的實現動態庫的查詢, 

                1. /etc/ld.so.conf下面加一行/usr/local/mysql/lib

                2. 儲存過後ldconfig一下(ldconfig 命令的用途,主要是在預設搜尋目錄(/lib和/usr/lib)以及動態庫配置檔案/etc/ld.so.conf內所列的目錄下,搜尋出可共享的動態 連結庫(格式如前介紹,lib*.so*),進而建立出動態裝入程式(ld.so)所需的連線和快取檔案.快取檔案預設為/etc /ld.so.cache,此檔案儲存已排好序的動態連結庫名字列表.)

--setopt=protected_multilib=false

相關文章