Libraries
更改給定執行檔的連結庫(CentOs 6)
我有一個像這樣連結的執行檔:
$ ldd a.out libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000) libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000) libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000) librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000) . .
其中 libcrypto 和 libssl 庫是 openssl 1.0.0-fips 庫。我想嘗試使用 1.0.1 庫,因此我將它們建構在我的主目錄中。有沒有辦法可以
a.out
輕鬆地重新連結我的新 openssl 庫?我想避免
- 必須重新連結
a.out
(因為建構工具非常複雜)- 更改任何全域設置(因為其他開發人員在這台機器上工作)
有可能在這裡做我希望的事情嗎?
您可以臨時用不同的庫替換此特定執行。在 Linux 中,環境變數 LD_LIBRARY_PATH 是一組以冒號分隔的目錄,應首先在其中搜尋庫,然後是標準目錄集;這在調試新庫或出於特殊目的使用非標準庫時很有用。環境變數 LD_PRELOAD 列出了具有覆蓋標準集的函式的共享庫,就像 /etc/ld.so.preload 一樣。-共享庫
你也可以直接呼叫載入器:
/lib/ld-linux.so.2 –library-path
path
executable