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


12

Valgrindトランクからソースをダウンロードし、ARM926(ARMv5tアーキテクチャ)を搭載した組み込みLinuxシステム(Montavista Linux)で使用するためにビルドしました。作成したアプリケーションを確認するために実行するまで、すべてがうまくいきました。Valgrindは私に言います:

"valgrind:プラットフォーム 'arm-linux'のツール 'memcheck'の起動に失敗しました:そのようなファイルまたはディレクトリはありません。

他のツールを実行しようとすると、同じメッセージが表示されます。以下のためにメイクインストール私はNFSを介して装着されている組み込みシステムのファイルシステムを指す--prefixオプションを使用(例えば--prefix = /ホーム/ NFS_mountedは/ opt / valgrindの)。インストール場所を確認し、そこのlibディレクトリに適切なツールが含まれていることを確認しました。Valgrindの対応するpkgconfigファイルも確認しましたが、問題はないようですので、現時点では無知で、何が問題なのかを理解できません。2つの質問:

  1. そのようなクロスコンパイルされたValgrindを使用/インストールすることは正しいですか?多分私はセットアップに関して何か間違ったことをしている、あるいは多分私が見逃しているホストシステムに関係している何かがある(gdb / gdbserverのような)。
  2. 誰かがARMアーキテクチャでそれを実行してみましたか?私はサポートがかなり最近であることを知っているので、きちんとした結果が得られるかどうか疑問に思っています。

回答:


15

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

export VALGRIND_LIB=~/valgrind/lib/valgrind/

./valgrind(に示すインストールされているディレクトリ・パス./configure


4

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

これを確認するには、ターゲットに「/」を指すシンボリックリンク/ home / NFS_mountを作成します。


どのようにしてそのパスを探しますか?pkgconfigには正しいターゲットパスが含まれているので、どこから取得しようとしますか?
celavek

./configureスクリプトはconfig.hヘッダーファイルを生成します。これにはプレフィックスパスが含まれているはずです。
クリストフプロボスト

2

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

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

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


.in_placeフォルダにがありません。
ArmenB

0

VALGRIND_LIBは、memcheckツールと他の依存するxコンパイル済みライブラリがあるフォルダーを指している必要があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.