參考:http://www.cnblogs.com/waterlin/archive/2011/07/14/2106056.html
143上的glibc較低,同學又不能進行升級(造成全局影響),所以使用了LD_LIBRARY_PATH,將179上的/lib,然后在.bashrc中添加
export LD_LIBRARY_PATH=path/lib:path/lib/x86_64-linxu-gnu
參考自:
http://blog.csdn.net/haoel/article/details/1602108
http://skatings.blogbus.com/logs/50437681.html
LD_PRELOAD 是這樣的一個環境變量:它可以影響程序的運行時的鏈接(Runtime linker),它允許你定義在程序運行前優先加載的動態鏈接庫。該功能主要就是用來有選擇性的載入不同動態鏈接庫中的相同函數。通過這個環境變量,我們 可以在主程序和其動態鏈接庫的中間加載別的動態鏈接庫,甚至覆蓋正常的函數庫。
在Linux下面,共享庫的尋找和加載是由 /lib/ld.so實現的。ld.so在標准路徑(/lib, /usr/lib) 中尋找應用程序的共享庫。
那么:
如果需要用到的共享庫在非標准路徑,ld.so怎么找到這些庫呢?
方法一:
鏈接時候通過 -R選項(或 -rpath)指定 run-time path.
方法二:
使用LD_LIBRARY_PATH來處理非標准路徑的共享庫。ld.so加載共享庫的時候,也會查找這個變量鎖設置的路徑。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:path
export LD_LIBRARY_PATH
方法三:
(1)將非標准庫路徑加入 /etc/ld.so.conf;/etc/ld.so.conf文件內存放着可被Linux共享的動態鏈接庫所在目錄的名字(系統目錄/lib, /usr/lib除外)
(2)運行ldconfig跟新 /etc/ld.so.cache;ld.so加載共享庫的時候,會從ld.so.cache查找。
方法四:
(1)將所生成的動態庫,放入 /lib 或 /usr/lib 目錄下;
(2)調用ldconfig 否則找不到library (ldconfig 跟新 ld.so.cache).
動態庫的搜索路徑搜索的先后順序是: 編譯目標代碼時指定的動態庫搜索路徑 環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑 配置文件/etc/ld.so.conf中指定的動態庫搜索路徑 默認的動態庫搜索路徑/lib 默認的動態庫搜索路徑/usr/lib
附:
參考自:http://www.ituring.com.cn/article/22101
LD_LIBRARY_PATH是一個環境變量,它的作用是為ld.so在運行時提供一個額外的搜索路徑列表。
出於安全原因,對於已設置setuid或setgid的可執行文件,LD_LIBRARY_PATH被完全忽略。
LD_LIBARY_PATH的需求有很多:
1、兼容性測試 2、將動態庫放置它處,做臨時測試
LD_LIBRARY_PATH不僅影響程序的加載,而且在鏈接階段也會被搜索,順序位於-L所指定的目錄之后(沒有-L選項也會被搜索).
好的使用LD_LIBRARY_PATH的例子應該是:
1、升級共享庫時,替換之前先測試一下 2、類似的,升級后的某個程序可能依賴於一些動態鏈接庫,如果你將某個鏈接庫替換了,程序可能就無法工作了。這時候,你可以使用LD_LIBRARY_PATH指向存有備份的一個目錄,然后,你可以沒有顧忌地替換系統版本了。萬一出錯,拷貝回去就是了。
規范的LD_LIBRARY_PATH使用方法:
1、絕不要設置全局的LD_LIBRARY_PATH 2、如果你一定要發布(ship)一個依賴於標准庫的程序,而且要把它安裝到非標准位置,按下面方法之一實施: (1)發布二進制.o文件,在安裝過程中使用正確的已安裝的庫來重新鏈接。 (2)發布可執行文件時,嵌入一個很長的虛假運行時庫路徑,在安裝過程中,使用二進制編輯器將其替換為正確的庫路徑。 (3)如果你必須使用LD_LIBRARY_PATH,將其封裝起來(如在局部的腳本中使用),而不至於影響其它程序。
附:
參考:http://www.cnblogs.com/openix/admin/EditPosts.aspx?postid=2431791
ldconfig是動態鏈接庫的管理命令。該命令主要是在默認搜尋目錄(/lib和/usr/lib)以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態鏈接庫,進而創建/跟新ld.so所需的鏈接和緩存文件。緩存文件默認為/etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表。