en utilisant Valgrind compilé de manière croisée

12

J'ai téléchargé les sources depuis le coffre Valgrind et je l'ai construit pour l'utiliser sur un système Linux embarqué (Montavista Linux) alimenté par un ARM926 (architecture ARMv5t). Tout s'est bien passé jusqu'à ce que j'essaie de l'exécuter pour vérifier une application que j'ai faite; Valgrind me dit:

"valgrind: impossible de démarrer l'outil 'memcheck' pour la plate-forme 'arm-linux': aucun fichier ou répertoire de ce type".

Essayer d'exécuter un autre outil donne le même message. Pour make install, j'ai utilisé l'option --prefix pointant vers le système de fichiers du système intégré qui est monté via NFS (par exemple --prefix = / home / NFS_mounted / opt / valgrind). J'ai vérifié l'emplacement d'installation et le répertoire lib contient les outils appropriés; J'ai également vérifié le fichier pkgconfig correspondant pour Valgrind et il semble être OK, donc je suis un peu désemparé en ce moment et je ne peux pas comprendre ce qui ne va pas. 2 questions:

  1. Est-il correct d'utiliser / d'installer un Valgrind compilé de la sorte? Peut-être que je fais quelque chose de mal concernant la configuration, ou peut-être qu'il y a quelque chose impliquant le système hôte qui me manque (comme gdb / gdbserver).
  2. Quelqu'un at-il essayé de l'exécuter sur des architectures ARM? Je suis conscient que le support est assez récent, donc je me demande si je pourrais obtenir des résultats décents.
celavek
la source

Réponses:

15

Exécutez cette commande sur votre appareil cible

export VALGRIND_LIB=~/valgrind/lib/valgrind/

./valgrindest installé le chemin du répertoire (indiqué dans ./configure)

bhargav
la source
4

Le problème est que «valgrind» recherche un exécutable différent pour exécuter la vérification réelle. Il utilise le chemin d'installation que vous avez spécifié lors de sa configuration, qui n'est pas le même chemin que sur la cible.

Vous devriez pouvoir le confirmer en créant un lien symbolique / home / NFS_mounted sur votre cible qui pointe vers '/'.

Kristof Provost
la source
À quoi ressemble ce chemin? Le pkgconfig contient le chemin cible correct, alors d'où tente-t-il de le prendre?
celavek
Je pense qu'il est compilé en. Le script ./configure génère un fichier d'en-tête config.h, qui devrait contenir le chemin du préfixe.
Kristof Provost
2

Mettez dans VALGRIND_LIB le répertoire parent du répertoire amd64-linux. Par exemple:

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

cela a fonctionné pour moi aujourd'hui :).

Hemant
la source
Je manque le .in_placedans le dossier.
ArmenB
0

VALGRIND_LIB doit pointer vers le dossier contenant l'outil memcheck et d'autres bibliothèques compilées x dépendantes

DERRIC LYNS
la source