Libraries

如何強制執行檔連結動態庫

  • November 17, 2017

我有這個編譯的執行檔:

./run.x

我已將其移至其他電腦,但不滿足動態依賴關係:

ldd ./run.x
       libx.1.so => not found

但是,在第二台電腦上存在相同庫的更新版本(但 Linux 核心與其他資源相同)。我的問題是:是否可以強制它連結其他共享對象:

ldd ./run.x
       libx.1.so => libx.2.so

不創建符號連結libx.1.so => libx2.so,也不重新編譯整個應用程序(我有充分的理由不這樣做)。

可以修補二進製文件中的連結名稱,但這不是一個好主意。如果庫更改了它的版本(從技術上講,它的 soname),這意味著它以向後不兼容的方式更改,因此不能保證您的執行檔可以與新庫一起使用。

要解決此問題,您需要複製舊庫或重新編譯執行檔。

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