linux下永久設定LD LIBRARY PATH

2021-09-11 23:09:48 字數 1620 閱讀 4575

在執行你的程式前,先在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"

或者為所有使用者修改這個值,修改/etc/profile檔案即可。

一般情況下,只有當程式所需的依賴庫不是系統標準安裝的庫或對庫的版本特定要求時,可以指定 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)

Linux設定串列埠永久許可權

在使用串列埠進行通訊時,經常需要使用指令來賦予使用者讀寫的許可權 sudo chmod 777 dev ttyusb0 但這樣的許可權是一次性的 每次重啟或者關閉計算機,插拔usb串列埠都無效了,炸裂!檢視串列埠ttyusb0 ls l dev ttyusb0可以看到所屬使用者組為dialout,r...

linux設定ulimit值永久生效

小知識的積累,linux 預設開啟檔案數linux 預設開啟檔案數為1024個,通過ulimit a 可以檢視open files 修改這個限制可以使用ulimt shn 65536 永久生效需要進行下面設定 1.etc pam.d login 新增pam limits.so 有時候系統預設新增 首...

linux設定ulimit值永久生效

小知識的積累,linux 預設開啟檔案數linux 預設開啟檔案數為1024個,通過ulimit a 可以檢視open files 修改這個限制可以使用ulimt shn 65536 永久生效需要進行下面設定 1.etc pam.d login 新增pam limits.so 有時候系統預設新增 首...