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 ではない可能性があります。
選択肢は 2 つあります。不足しているライブラリの古いバージョンを見つけてインストールするか、不足しているライブラリを、インストールされているライブラリのバージョンへのリンクとして追加する方がはるかに簡単で成功する可能性が高い方法です。
現在、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