
「arm-linux」実行ファイルで Valgrind を使用する際に問題が発生します。
私はここのメインページから Valgrind をダウンロードしました:http://valgrind.org/downloads/インストールするには、次のコマンドを実行します。
sudo ./configure
sudo make
sudo make install
Ubuntu では、Linux GCC を使用してコンパイルされた実行可能な HelloWorld ファイル「HelloWorld.c」を試しています。Valgrind は問題なく実行されます。
次に、ARM-Linux 用のクロスコンパイラを使用してコンパイルされた実行可能ファイル (この実行可能ファイルは組み込みデバイスで実行するようにコンパイルされています) で試してみると、次のエラーが発生しました。
valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory
Google でいろいろ調べてみましたが、あまり情報が見つからなかったので、次のことを試しました:
export VALGRIND_LIB=/usr/local/lib/Valgrind
まだ同じエラーが表示されます。何が間違っているのでしょうか?
答え1
Valgrindは「memcheck」ツールに適した実行ファイルを起動しようとしていますが、見つかりません。これは、'./configure' スクリプトは、ホスト アーキテクチャ (PC) に固有の valgrind パッケージのインストールに有効な Makefile を作成しましたが、別のアーキテクチャ (この場合は ARM) 用の実行可能ファイルを入力しています。; これにより、作業を実行するための ARM 固有のツールが不足する状況が発生します。私は 'callgrind' ツール (valgrind パッケージの一部) でも同様の問題を抱えていましたが、strace を実行すると次の行が見つかりました。
execve("/usr/local/lib/valgrind/callgrind-arm-linux", ["valgrind", "--tool=callgrind", "Application.STM.out"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
つまり、ARM 固有の callgrind バイナリが欠けていることになります。
詳しく言うと、あなた (そして少し前の私) がやろうとしていることは Valgrind ではサポートされていないので、エミュレーターを使用してやりたいことを実行することになります。