クロスコンパイルされたValgrindの使用

クロスコンパイルされたValgrindの使用

Valgrindトランクからソースコードをダウンロードし、ARM926(ARMv5tアーキテクチャ)に基づく組み込みLinuxシステム(Montavista Linux)で使用するように構築しました。私が作ったいくつかのアプリをチェックするために実行するまで、すべてがうまくいっていました。 Walgrindは次のように語った。

"valgrind: 'arm-linux'プラットフォームの 'memcheck'ツールを起動できませんでした。そのファイルやディレクトリはありません。」

別のツールを実行しようとすると、同じメッセージが表示されます。 ~のためインストールするために--prefixオプションを使用して、NFSを介してマウントされた組み込みシステムのファイルシステムを指します(たとえば、--prefix = / home / NFS_mounted / opt / valgrind)。設置場所を確認してみる図書館そのディレクトリには適切なツールが含まれています。 Valgrindに対応するpkgconfigファイルもチェックしたところ、それは大丈夫だと思うので、何が間違っているのかを理解するのは難しいです。質問2:

  1. このようにクロスコンパイルされたValgrindを使用/インストールするのは正しいですか?設定に問題がある場合や、ホストシステムに欠けている部分(gdb / gdbserverなど)がある可能性があります。
  2. ARMアーキテクチャで実行している人はいますか?最近までサポートが行われたことがわかっていますが、果たしてまともな結果が得られるのだろうかと思います。

答え1

ターゲットデバイスでこのコマンドを実行します。

export VALGRIND_LIB=~/valgrind/lib/valgrind/

./valgrindインストールディレクトリのパスはどこにあります(に提供されています./configure

答え2

問題は、「valgrind」が実際のチェックを実行するために別の実行可能ファイルを探していることです。構成時に指定したインストールパスを使用します。これはターゲットのパスとは異なります。

ターゲットで「/」を指すシンボリックリンク/home/NFS_mountedを作成することで、これを確認できます。

答え3

amd64-linux ディレクトリの親ディレクトリに VALGRIND_LIB を配置します。たとえば、

export VALGRIND_LIB=/u/gallinar/downloaded/valgrind-3.2.3/.in_place

今日私のために働いた:)。

答え4

提案されたソリューションのどれも効果がなかったので、すべてのオプションモジュールを有効にしました。

./configure --enable-only64bit --enable-inner --enable-lto --enable-tls

見て、それはうまくいった。

関連情報