我有一个在 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
,所以有些东西截然不同。但是,
/usr/lib/vmware-installer/2.1.0/lib/lib/libjpeg.so.62/libjpeg.so.62
我的 14.04 系统上确实有 ,所以也许你也有类似的东西(我安装了 vmplayer)。如果库libjpeg.8.0.2
不适用于链接,请四处寻找 vmware install 留下的东西(如果需要,可以免费下载播放器)。
答案3
在我的情况下,apt-get 不起作用,我做了以下操作:
git clone https://github.com/LuaDist/libjpeg.git
进而:
./configure
make
make install