如何正確使用環境變數LD LIBRARY PATH

2021-06-01 12:03:30 字數 1764 閱讀 8233

英文原文:

ld_library_path環境變數主要是用於指定動態鏈結器(ld)查詢elf可執行檔案執行時所依賴的動態庫(so)的路徑,其內容是以冒號分隔的路徑列表。

ld鏈結器將優先在該變數設定

臨時設定ld_library_path環境變數的最佳方式是:在執行你的程式前,先在bash中通過命令列或指令碼來設定,這樣你的特殊設定對系統的其它程式的執行而言是隔離的,不會影響其他程式對依賴庫的查詢路徑,因為在bash中設定的環境變數只對本次會話有效。在你下次通過ssh工具連線到系統時,新會話的系統環境變數引數不受上次會話的設定影響。 如:

$ export ld_library_path="/list/of/library/paths:/another/path"

$ ./program

但是,你如果希望對

ld_library_path環境變數的設定永久生效,上面的方式就不適合了。如果你的所有程式都需要鏈結到某個自定義的查詢路徑指定的動態庫檔案,若某次執行程式前你忘記了設定ld_library_path環境變數,這樣你的程式會鏈結到其他動態庫,可能會導致詭異的結果或意外崩潰,而且在可能存在潛在的安全問題。

如果不考慮上述的各種情況,你可以通過修改home目錄下的 .bashrc 檔案來設定ld_library_path環境變數,這樣每次當你啟用乙個會話連線到系統時,系統會自動執行該檔案指定的命令,這樣免去了每次手動設定相關引數的麻煩。增加如下一行:

export library_path="/list/of/library/paths:/another/path"

一般情況下,只有當程式所需的依賴庫不是系統標準安裝的庫或對庫的版本特定要求時,可以指定 ld_library_path環境變數實現。

通過下面的命令可以檢視可執行檔案或庫檔案本身對所依賴的庫的情況:

$ ldd ~/myprogram

輸出類似:

librt.so.1 => /lib/librt.so.1 (0x00002b4eca08e000)

libc.so.6 => /lib/libc.so.6 (0x00002b4eca49f000)

libpthread.so.0 => /lib/libpthread.so.0 (0x00002b4eca7df000)

/lib64/ld-linux-x86-64.so.2 (0x00002b4ec9e72000)

libmylib.so.1 => not found

檢查結果表明, 鏈結器無法找到依賴的庫libmylib.so.1 

我們假設存在這個庫 在~/yprogdir/lib/libmylib.so.1, 現在我們可能通過設定ld_library_path環境變數以便鏈結器找到。

$ export ld_library_path="~/myprogdir/lib/:$ld_library_path"

$ ldd ~/myprogram

輸出如下:

librt.so.1 => /lib/librt.so.1 (0x00002b4eca08e000)

libc.so.6 => /lib/libc.so.6 (0x00002b4eca49f000)

libpthread.so.0 => /lib/libpthread.so.0 (0x00002b4eca7df000)

/lib64/ld-linux-x86-64.so.2 (0x00002b4ec9e72000)

libmylib.so.1 => ~/myprogdir/lib/libmylib.so.1 (0x00002b4eca9fa000)

這樣動態鏈結器就可能找到所有需要的庫檔案 。

環境變數 Vue 環境變數的使用

文章背景 開發過程中經常遇到這樣的問題 相同的 部署到不同環境時需要使用不同的變數 比如介面網域名稱變數 serve 在測試環境和生產環境使用的是不同的網域名稱。這種情況下如果在 裡定義變數,打包部署前再修改 切換成不同的值再打包不利於 的維護,也很繁瑣。這時候利用環境變數來實現,在不用每次打包前改...

環境變數使用

在安裝軟體的過程中,經常用到環境變數,這裡記錄環境變數相關的一些操作 1 進入環境變數 路徑 電腦右鍵 屬性 高階系統設定 環境變數 我們主要編輯系統變數,任何使用者都可共享 使用者變數只作用於對應賬號 2 path編輯系統變數視窗不一樣 以 開頭,所有變數在同一行 不以 開頭,所有變數不在同一行 ...

如何加環境變數

以mysql為例。1 找到mysql服務端所在目錄,c program files mysql mysql server 5.7 bin 如下圖所示。2 在我的電腦中的 點選環境變數,找到系統變數中的path,如下圖所示。3 點選編輯系統變數,在最後增加 c program files mysql ...