используя кросс-компилированный Valgrind


12

Я скачал исходники из ствола Valgrind и собрал его для использования во встроенной системе Linux (Montavista Linux), работающей на ARM926 (архитектура ARMv5t). Все шло хорошо, пока я не попытался запустить его, чтобы проверить какое-то приложение, которое я сделал; Вальгринд говорит мне:

msgstr "valgrind: не удалось запустить инструмент 'memcheck' для платформы 'arm-linux': такого файла или каталога нет".

Попытка запустить любой другой инструмент дает то же сообщение. Для make install я использовал опцию --prefix, указывающую на файловую систему встроенной системы, которая монтируется через NFS (например, --prefix = / home / NFS_mounting / opt / valgrind). Я проверил место установки и каталог lib там содержит соответствующие инструменты; Я также проверил соответствующий файл pkgconfig для Valgrind, и, кажется, все в порядке, так что я сейчас немного невежественен и не могу понять, что происходит не так. 2 вопроса:

  1. Правильно ли использовать / устанавливать кросс-скомпилированный Valgrind? Возможно, я что-то не так делаю в отношении установки, или, может быть, что-то, связанное с хост-системой, мне не хватает (например, gdb / gdbserver).
  2. Кто-нибудь пробовал запускать его на архитектурах ARM? Я знаю, что поддержка довольно недавно, поэтому мне интересно, смогу ли я получить достойные результаты.

Ответы:


15

Запустите эту команду на целевом устройстве

export VALGRIND_LIB=~/valgrind/lib/valgrind/

где ./valgrindустановлен путь к каталогу (указан в ./configure)


4

Проблема в том, что 'valgrind' ищет другой исполняемый файл для запуска реальной проверки. Он использует путь установки, указанный вами при настройке, который отличается от пути назначения.

Вы должны быть в состоянии подтвердить это, создав символическую ссылку / home / NFS_mounting на вашей цели, которая указывает на '/'.


Как выглядит этот путь? Pkgconfig содержит правильный целевой путь, так откуда он пытается его взять?
Celavek

Я думаю, что он скомпилирован. Сценарий ./configure генерирует файл заголовка config.h, который должен содержать префиксный путь.
Кристоф Провост

2

Поместите в VALGRIND_LIB родительский каталог каталога amd64-linux. Например:

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

у меня сегодня сработало :).


Я скучаю по .in_placeв папке.
АрменБ

0

VALGRIND_LIB должен указывать на папку, в которой есть инструмент memcheck и другие зависимые x скомпилированные библиотеки

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.