web-dev-qa-db-ja.com

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

Ubuntu 13.10(32ビット)でQtCreatorを使用してC++プログラムを作成し、コンパイルしました。新しくインストールしたUbuntu13.10(64ビット)でコンパイル済みプログラムを実行しようとしました。しかし、それは実行されません。

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

2
nano - merge me

これは少し大雑把ですが、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は、これらの欠落しているライブラリを「見つかりません」としてリストします。

幸運を!

4
etherfish