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.

Odpowiedzi:


15

Uruchom to polecenie na urządzeniu docelowym

export VALGRIND_LIB=~/valgrind/lib/valgrind/

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


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 „/”.


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 :).


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.