utilizando Valgrind con compilación cruzada

12

Descargué las fuentes del tronco de Valgrind y las construí para usarlas en un sistema Linux incorporado (Montavista Linux) alimentado por un ARM926 (arquitectura ARMv5t). Todo salió bien hasta que intenté ejecutarlo para verificar alguna aplicación que hice; Valgrind me dice:

"valgrind: no se pudo iniciar la herramienta 'memcheck' para la plataforma 'arm-linux': No existe tal archivo o directorio".

Intentar ejecutar cualquier otra herramienta da el mismo mensaje. Para realizar la instalación , utilicé la opción --prefix que apunta al sistema de archivos del sistema incorporado que está montado a través de NFS (por ejemplo, --prefix = / home / NFS_mounted / opt / valgrind). Verifiqué la ubicación de instalación y el directorio lib allí contiene las herramientas adecuadas; También verifiqué el archivo pkgconfig correspondiente para Valgrind y parece estar bien, así que no tengo ni idea en este momento y no puedo entender qué está mal. 2 preguntas:

  1. ¿Es correcto usar / instalar un Valgrind de compilación cruzada como ese? Tal vez estoy haciendo algo mal con respecto a la configuración, o tal vez hay algo relacionado con el sistema host que me falta (como gdb / gdbserver).
  2. ¿Alguien ha intentado ejecutarlo en arquitecturas ARM? Soy consciente de que el soporte es bastante reciente, así que me pregunto si podría obtener resultados decentes.
celavek
fuente

Respuestas:

15

Ejecute este comando en su dispositivo de destino

export VALGRIND_LIB=~/valgrind/lib/valgrind/

donde ./valgrindestá instalada la ruta del directorio (dada en ./configure)

bhargav
fuente
4

El problema es que 'valgrind' está buscando un ejecutable diferente para ejecutar la comprobación real. Utiliza la ruta de instalación que especificó cuando la configuró, que no es la misma ruta que en el destino.

Debería poder confirmar esto creando un enlace simbólico / home / NFS_mounted en su objetivo que apunte a '/'.

Kristof Provost
fuente
¿Cómo se ve ese camino? El pkgconfig contiene la ruta de destino correcta, ¿desde dónde intenta llevarlo?
celavek
Creo que está compilado. El script ./configure genera un archivo de encabezado config.h, que debe contener la ruta del prefijo.
Kristof Provost
2

Ponga en VALGRIND_LIB el directorio padre del directorio amd64-linux. P.ej:

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

funcionó para mí hoy :).

Hemant
fuente
Me falta el .in_placeen la carpeta.
ArmenB
0

VALGRIND_LIB necesita apuntar a la carpeta que tiene la herramienta memcheck y otras bibliotecas compiladas x dependientes

DERRIC LYNS
fuente