我有一個在 Ubuntu 12.04 上運行的二進位程式。它具有共享物件依賴性。 pmvs 是程式的名稱
$ ldd pmvs
linux-vdso.so.1 => (0x00007fff043c3000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fa14dc9a000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa14d964000)
libjpeg.so.62 => not found
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa14d747000)
liblapack.so.3 => not found
libgsl.so.0 => not found
libgslcblas.so.0 => not found
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa14d449000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa14d149000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa14cf33000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa14cb73000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fa14c955000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa14c751000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa14dece000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fa14c54d000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fa14c347000)
它顯然找不到 libjpeg.so。但我確信它存在並且位於/usr/lib/x86_64-linux-gnu/libjpeg.so
。如何設定連結器路徑以包含該位置?
答案1
安裝舊版的 libjpeg 解決了我的問題
sudo apt-get install libjpeg62:i386
sudo apt-get install libjpeg62
答案2
由於在 中成功找到了其他庫/usr/lib/x86_64-linux-gnu
,因此您的問題不是如何指定該位置,而是可能已安裝庫的版本號不是程式正在尋找的 62。
您有兩種選擇,要么查找並安裝丟失的庫的舊版本,要么更簡單且可能成功的方法是將丟失的庫添加為已安裝庫版本的連結。
現在 Ubuntu 14.04 有了libjpeg.so.8.0.2
,所以有些東西完全不同了。不過,我的 14.04 系統上確實有一個
/usr/lib/vmware-installer/2.1.0/lib/lib/libjpeg.so.62/libjpeg.so.62
,所以也許你也有類似的東西(我安裝了 vmplayer)。如果該libjpeg.8.0.2
庫不適用於該鏈接,請四處尋找 vmware 安裝留下的內容(如果需要,可以免費下載該播放器)。
答案3
就我而言, apt-get 不起作用,我執行了以下操作:
git clone https://github.com/LuaDist/libjpeg.git
進而:
./configure
make
make install