za pomocą skompilowanej krzyżowo Valgrind

12

Pobrałem źródła z pnia Valgrind i zbudowałem je do użycia na wbudowanym systemie Linux (Montavista Linux) opartym na ARM926 (architektura ARMv5t). Wszystko szło dobrze, dopóki nie spróbowałem go uruchomić, by sprawdzić jakąś aplikację; Valgrind mówi mi:

„valgrind: nie można uruchomić narzędzia„ memcheck ”dla platformy„ arm-linux ”: Brak takiego pliku lub katalogu”.

Próba uruchomienia dowolnego innego narzędzia daje ten sam komunikat. Do make install użyłem opcji --prefix wskazującej na system plików systemu wbudowanego, który jest montowany przez NFS (np. --Prefix = / home / NFS_mounted / opt / valgrind). Sprawdziłem lokalizację instalacji i tam znajduje się katalog lib zawierający odpowiednie narzędzia; Sprawdziłem również odpowiedni plik pkgconfig dla Valgrind i wydaje się być OK, więc jestem teraz trochę nieświadomy i nie mogę zrozumieć, co się dzieje. 2 pytania:

  1. Czy poprawne jest używanie / instalowanie tak skompilowanej krzyżowo Valgrind? Może robię coś złego w konfiguracji, a może coś, co dotyczy systemu hosta, którego mi brakuje (gdb / gdbserver like).
  2. Czy ktoś próbował uruchomić go na architekturze ARM? Wiem, że wsparcie jest dość niedawne, więc zastanawiam się, czy mógłbym uzyskać przyzwoite wyniki.
celavek
źródło

Odpowiedzi:

15

Uruchom to polecenie na urządzeniu docelowym

export VALGRIND_LIB=~/valgrind/lib/valgrind/

gdzie ./valgrindjest zainstalowana ścieżka katalogu (podana w ./configure)

Bhargaw
źródło
4

Problem polega na tym, że „valgrind” szuka innego pliku wykonywalnego do przeprowadzenia prawdziwego sprawdzania. Używa ścieżki instalacji określonej podczas konfigurowania, która nie jest tą samą ścieżką, co w systemie docelowym.

Powinieneś być w stanie to potwierdzić poprzez utworzenie dowiązania symbolicznego / home / NFS_mounted na twoim celu, który wskazuje na „/”.

Kristof Provost
źródło
Jak wygląda ta ścieżka? Program pkgconfig zawiera poprawną ścieżkę docelową, więc skąd próbuje ją wziąć?
celavek
Myślę, że jest wkompilowany. Skrypt ./configure generuje plik nagłówka config.h, który powinien zawierać ścieżkę prefiksu.
Kristof Provost
2

Umieść w VALGRIND_LIB katalog macierzysty katalogu amd64-linux. Na przykład:

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

zadziałało dla mnie dzisiaj :).

Hemant
źródło
Brakuje mi .in_placew folderze.
ArmenB
0

VALGRIND_LIB musi wskazywać na folder, który ma narzędzie memcheck i inne zależne biblioteki X skompilowane

DERRIC LYNS
źródło