mit cross-kompiliertem Valgrind

12

Ich habe die Quellen vom Valgrind-Trunk heruntergeladen und für die Verwendung auf einem eingebetteten Linux-System (Montavista Linux) mit einem ARM926 (ARMv5t-Architektur) erstellt. Alles lief gut, bis ich versuchte, es auszuführen, um eine von mir erstellte Anwendung zu überprüfen. Valgrind sagt mir:

"valgrind: Tool 'memcheck' für Plattform 'arm-linux' konnte nicht gestartet werden: Keine solche Datei oder kein solches Verzeichnis".

Der Versuch, ein anderes Tool auszuführen, gibt dieselbe Meldung aus. Für make install habe ich die Option --prefix verwendet, die auf das Dateisystem des eingebetteten Systems verweist, das über NFS bereitgestellt wird (z. B. --prefix = / home / NFS_mounted / opt / valgrind). Ich habe den Installationsort überprüft und das lib- Verzeichnis enthält die richtigen Tools. Ich habe auch die entsprechende pkgconfig-Datei auf Valgrind überprüft und es scheint in Ordnung zu sein, daher bin ich im Moment ahnungslos und kann nicht herausfinden, was falsch läuft. 2 Fragen:

  1. Ist es richtig, so einen cross-kompilierten Valgrind zu verwenden / zu installieren? Vielleicht mache ich etwas falsch in Bezug auf das Setup, oder es gibt etwas, das das Host-System betrifft, das mir fehlt (gdb / gdbserver wie).
  2. Hat jemand versucht, es auf ARM-Architekturen auszuführen? Ich bin mir bewusst, dass die Unterstützung relativ neu ist, daher frage ich mich, ob ich anständige Ergebnisse erzielen könnte.
Celavek
quelle

Antworten:

15

Führen Sie diesen Befehl auf Ihrem Zielgerät aus

export VALGRIND_LIB=~/valgrind/lib/valgrind/

Wo ./valgrindist der Verzeichnispfad installiert (angegeben in ./configure)

Bhargav
quelle
4

Das Problem ist, dass 'valgrind' nach einer anderen ausführbaren Datei sucht, um die eigentliche Prüfung durchzuführen. Es verwendet den Installationspfad, den Sie bei der Konfiguration angegeben haben. Dies ist nicht derselbe Pfad wie auf dem Ziel.

Sie sollten dies bestätigen können, indem Sie auf Ihrem Ziel einen Symlink / home / NFS_mounted erstellen, der auf '/' zeigt.

Kristof Provost
quelle
Wie sieht es für diesen Weg aus? Die pkgconfig enthält den richtigen Zielpfad. Woher versucht sie ihn zu nehmen?
Celavek
Ich denke, es ist kompiliert. Das ./configure-Skript generiert eine config.h-Header-Datei, die den Präfixpfad enthalten sollte.
Kristof Provost
2

Geben Sie in VALGRIND_LIB das übergeordnete Verzeichnis des amd64-linux-Verzeichnisses ein. Z.B:

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

es hat heute bei mir funktioniert :).

Hemant
quelle
Ich vermisse das .in_placeim Ordner.
ArmenB
0

VALGRIND_LIB muss auf den Ordner verweisen, der das Memcheck-Tool und andere abhängige x-kompilierte Bibliotheken enthält

DERRIC LYNS
quelle