크로스 컴파일 된 Valgrind 사용


12

Valgrind 트렁크에서 소스를 다운로드하여 ARM926 (ARMv5t 아키텍처)으로 구동되는 임베디드 Linux 시스템 (Montavista Linux)에서 사용하도록 빌드했습니다. 내가 만든 일부 응용 프로그램을 확인하기 위해 실행하려고 할 때까지 모든 것이 잘되었습니다. Valgrind는 다음과 같이 말합니다.

"valgrind : 플랫폼 'arm-linux'에 대해 'memcheck'도구를 시작하지 못했습니다 : 해당 파일 또는 디렉토리가 없습니다."

다른 도구를 실행하려고하면 같은 메시지가 나타납니다. 설치위해 NFS를 통해 마운트 된 임베디드 시스템의 파일 시스템을 가리키는 --prefix 옵션을 사용했습니다 (예 : --prefix = / home / NFS_mounted / opt / valgrind). 설치 위치와 lib 디렉토리에 적절한 도구가 있는지 확인했습니다 . 또한 Valgrind에 해당하는 pkgconfig 파일을 확인했는데 괜찮은 것 같습니다. 지금은 실마리가 아니며 어떤 일이 일어나고 있는지 알 수 없습니다. 두 가지 질문 :

  1. 그런 크로스 컴파일 Valgrind를 사용 / 설치하는 것이 맞습니까? 어쩌면 설정과 관련하여 잘못된 일이 있거나 누락 된 호스트 시스템과 관련이있을 수 있습니다 (gdb / gdbserver와 같은).
  2. 누구든지 ARM 아키텍처에서 실행 해 보셨습니까? 지원이 상당히 최근임을 알고 있으므로 적절한 결과를 얻을 수 있는지 궁금합니다.

답변:


15

대상 장치에서이 명령을 실행하십시오.

export VALGRIND_LIB=~/valgrind/lib/valgrind/

./valgrind(주어진 설치되어있는 디렉토리 경로 ./configure)


4

문제는 'valgrind'가 실제 검사를 실행할 다른 실행 파일을 찾고 있다는 것입니다. 구성 할 때 지정한 설치 경로를 사용하는데, 이는 대상과 동일한 경로가 아닙니다.

대상에서 '/'를 가리키는 심볼릭 링크 / home / NFS_mounted를 만들어이를 확인할 수 있어야합니다.


그 길을 어떻게 찾습니까? pkgconfig에는 올바른 대상 경로가 포함되어 있으므로 어디에서 가져 가려고합니까?
celavek

컴파일 된 것 같습니다. ./configure 스크립트는 접두사 경로를 포함 해야하는 config.h 헤더 파일을 생성합니다.
Kristof Provost

2

VALGRIND_LIB에 amd64-linux 디렉토리의 상위 디렉토리를 넣으십시오. 예 :

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

그것은 오늘 나를 위해 일했습니다 :).


.in_place폴더에가 없습니다 .
ArmenB

0

VALGRIND_LIB는 memcheck 도구 및 기타 종속 x 컴파일 된 라이브러리가있는 폴더를 가리켜 야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.