我在我的計算機上構建我的程序,其中libtiff.so -> libtiff.so.5
。 然後推動另一臺機器上的構建libtiff.so -> libtiff.so.4
。我如何鏈接到較舊版本的共享庫
在運行時,我的程序存在:«加載共享庫時出錯:libtiff.so.5
:無法打開共享對象文件:沒有這樣的文件或目錄»。
我無法升級另一臺機器,我想避免在虛擬機上編譯(使用與正在運行的機器相同的linux版本)。因此,我想強制編譯器使用libtiff.so.4
而不是libtiff.so.5
。
我在我的電腦上安裝了libtiff.so.4
(以及libtiff.so.5
)。我如何強制與這個版本的鏈接,而不是更新的版本。我想過移動libtiff.so -> libtiff.so.4
,但是如果它需要最新版本,我害怕會破壞我的系統(apt-get purge libtiff5
因爲其他軟件包需要它而提供錯誤)。
是否可以鏈接舊的(安裝)版本的庫?如果是,如何? 將libtiff.so
的符號鏈接更改爲舊版本會有害嗎?如果不是,它會解決我的問題嗎?
也許使用[LD_PRELOAD](http://en.wikipedia.org/wiki/Dynamic_linker)。 – jml
如何在鏈接時使用.so.4的完整路徑而不是通常的'-ltiff'? (你會需要編譯對抗libtiff4兼容的頭文件)。 –
編譯器無法找到共享庫的位置。我想你也需要通過PATH。 –