크로스 컴파일할 도커에서 다음 실행
$ wget -O /workdir/valgrind-3.12.0.tar.bz2 "http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2”
$ tar jxf /workdir/valgrind-3.12.0.tar.bz2 -C /workdir
$ cd /workdir/valgrind-3.12.0
$ sed -i -e "s#armv7#arm#g" configure
$ ./configure --host=${TARGET} --prefix=${PREFIX}/out
$ make
$ make install
ls ${PREFIX}/out 로 확인해보면 make 한 결과가 out 폴더 밑에 있다.
$ ls ${PREFIX}/out
bin include lib share
타겟 보드로 다음 바이너리 파일을 넘김
scp -P 126 ${PREFIX}/out/bin/valgrind root@192.168.23.89:/usr/bin
scp -P 126 ${PREFIX}/out/bin/callgrind_* root@192.168.23.89:/usr/bin
scp -P 126 ${PREFIX}/out/lib/valgrind/vgpreload_* root@192.168.23.89:/dev/valgrind
scp -P 126 ${PREFIX}/out/lib/valgrind/memcheck-arm-linux root@192.168.23.89:/dev/valgrind
scp -P 126 ${PREFIX}/out/lib/valgrind/callgrind-arm-linux root@192.168.23.89:/dev/valgrind
타겟 보드에서 Valgrind library 를 잡아줌
export VALGRIND_LIB=/dev/valgrind
타겟보드에서 다음을 실행
valgrind --tool=callgrind ./execName param1
결과물로 callgrind.out.?? 이 생긴것을 확인함
brew install qcachegrind
터미널 열고 qcachegrind 명령어 실행
$ qcachegrind
참고 링크
armv7환경으로 크로스컴파일 하는방법