Libraries

更改給定執行檔的連結庫(CentOs 6)

  • November 18, 2011

我有一個像這樣連結的執行檔:

 $ 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-pathpath executable

引用自:https://unix.stackexchange.com/questions/24811