Linux環境變量LD_LIBRARY_PATH(指定share libraries)

        今天在使用自己編譯的MySQL時遇到了一個問題:使用自己編譯的這個MySQL的mysql工具連接實例時老是報錯*clientmsyql.so文件找不到,當時的連接方式爲./basedir/bin/mysql ... 這樣肯定就是使用自己編譯的這個MySQL自帶的mysql工具了。去basedir 的lib目錄裏面看了下明明存在那些*.so文件,那爲什麼會提示找不到呢?這個可能是編譯的問題了吧(自己也不太清楚具體哪個地方沒弄好,別人編譯的),總之就是他不會去basedir的lib目錄裏面去找這些*.so文件。爲了驗證這點,直接使用mysql連接實例(因爲機器上還裝了其他版本的mysql,已經在環境變量PATH裏面設置)可以成功。

        那麼有什麼方式可以顯示的告訴mysql去哪裏找這些*.so文件麼?起初我很2的在PATH裏面制定了這些so文件的路徑,結果發現不起作用,後來才知道PATH這個環境變量是對可執行文件起作用的。真正要用的是LD_LIBRARY_PATH這個環境變量。它纔是linux中顯示的指定去找share libraries文件的環境變量!查了下這個環境變量的用法,發現這篇文章寫得比較實在:我們應該儘量少用這個環境變量,它的主要目的不是用來給一個需要穩定運行的程序顯示的指定它要去哪裏找它需要的share libraries,而是用來測試一些新的share libraries,比如你新開發了一些share libraries,你不想急着覆蓋舊的,那麼你可以臨時用LD_LIBRARY_PATH指定這些新share libraries的路徑。爲什麼說不建議給一個長期需要運行程序用LD_LIBRARY_PATH來指定share libraries呢?因爲這個不是很安全吧,哪天無意被別人修改了那不就慘了,因爲你要知道LD_LIBRARY_PATH是一個全局的環境變量,別的程序也可以用的。


附:

linux中怎麼更改環境變量?比如PATH=${PATH}:/path,個人喜歡用${}這樣應該是最安全的,防止$解釋的時候將後面的一長串全部當做變量名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章