![크로스 컴파일된 Valgrind 사용](https://linux55.com/image/443/%ED%81%AC%EB%A1%9C%EC%8A%A4%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%90%9C%20Valgrind%20%EC%82%AC%EC%9A%A9.png)
Valgrind 트렁크에서 소스 코드를 다운로드하여 ARM926(ARMv5t 아키텍처)을 기반으로 하는 임베디드 Linux 시스템(Montavista Linux)에서 사용하도록 빌드했습니다. 내가 만든 일부 앱을 확인하기 위해 실행하기 전까지는 모든 것이 잘 진행되고 있었습니다. Walgrind는 다음과 같이 말했습니다.
"valgrind: 'arm-linux' 플랫폼에 대해 'memcheck' 도구를 시작할 수 없습니다. 해당 파일이나 디렉터리가 없습니다."
다른 도구를 실행하려고 하면 동일한 메시지가 나타납니다. ~을 위한설치하기 위해서--prefix 옵션을 사용하여 NFS를 통해 마운트된 임베디드 시스템의 파일 시스템을 가리킵니다(예: --prefix=/home/NFS_mounted/opt/valgrind). 설치 위치를 확인해보니도서관해당 디렉토리에는 적절한 도구가 포함되어 있습니다. Valgrind에 해당하는 pkgconfig 파일도 확인한 결과 괜찮은 것 같아서 이제 무엇이 잘못되었는지 파악하기가 어렵습니다. 질문 2개:
- 이렇게 크로스 컴파일된 Valgrind를 사용/설치하는 것이 맞나요? 설정에 문제가 있을 수도 있고 호스트 시스템에 누락된 부분(gdb/gdbserver 등)이 있을 수도 있습니다.
- ARM 아키텍처에서 실행해 본 사람이 있습니까? 최근에야 지원이 이루어진 것으로 알고 있는데 과연 괜찮은 결과를 얻을 수 있을지 궁금합니다.
답변1
대상 장치에서 이 명령을 실행하세요.
export VALGRIND_LIB=~/valgrind/lib/valgrind/
./valgrind
설치 디렉터리 경로는 어디에 있습니까( 에 제공됨 ./configure
)
답변2
문제는 "valgrind"가 실제 검사를 실행하기 위해 다른 실행 파일을 찾고 있다는 것입니다. 구성 시 지정한 설치 경로를 사용하며, 이는 대상의 경로와 다릅니다.
대상에서 "/"를 가리키는 심볼릭 링크 /home/NFS_mounted를 생성하여 이를 확인할 수 있습니다.
답변3
amd64-linux 디렉터리의 상위 디렉터리에 VALGRIND_LIB를 배치합니다. 예를 들어:
export VALGRIND_LIB=/u/gallinar/downloaded/valgrind-3.2.3/.in_place
오늘 나를 위해 일했습니다 :).
답변4
제안된 솔루션 중 어느 것도 효과가 없었으므로 모든 선택적 모듈을 활성화했습니다.
./configure --enable-only64bit --enable-inner --enable-lto --enable-tls
보라, 그것은 효과가 있었다.