Libraries
如何強制執行檔連結動態庫
我有這個編譯的執行檔:
./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),這意味著它以向後不兼容的方式更改,因此不能保證您的執行檔可以與新庫一起使用。
要解決此問題,您需要複製舊庫或重新編譯執行檔。