コンパイルされた C++ プログラムの依存関係を見つける

コンパイルされた C++ プログラムの依存関係を見つける

Ubuntu 13.10 (32 ビット) で Qt Creator を使用して C++ プログラムを作成し、コンパイルしました。新しくインストールした Ubuntu 13.10 (64 ビット) でコンパイルしたプログラムを実行しようとしましたが、実行されません。

問題は依存関係にあると思います。必要な依存関係を見つけるにはどうすればよいでしょうか (=名前とバージョンを知るにはどうすればよいでしょうか)?

答え1

これは少し粗雑ですが、ldd コマンドはあなたの状況に適していると思います。

ldd は、実行可能ファイルに対して動的にロードされたライブラリ依存関係をリストするために使用されます。 ldd が必要なライブラリを見つけられない場合、ライブラリが「見つかりません」と表示されます。

たとえば、私が見つけた古い gqrx バイナリを使用して ldd を実行すると、次の出力が得られます。

linux-gate.so.1 (0xb7fff000)
libgnuradio-audio.so.3.6.1 => not found
libgnuradio-osmosdr.so.0 => not found
libgnuradio-core.so.3.6.1 => not found
libgruel.so.3.6.1 => not found
libfftw3f.so.3 => /usr/lib/i386-linux-gnu/libfftw3f.so.3 (0x41b5d000)
libusb-1.0.so.0 => /lib/i386-linux-gnu/libusb-1.0.so.0 (0x422ee000)
libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0x42e47000)
libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xb7cde000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0x411dc000)

ご覧のとおり、私はその後 libgnuradio ライブラリをアップグレードし、古いバージョンを削除しました。ldd は、不足しているライブラリを「見つかりません」としてリストします。

幸運を!

関連情報