我在“arm-linux”可执行文件上使用 Valgrind 时遇到问题。
我从这里的主页下载了 Valgrind :http://valgrind.org/downloads/。运行以下命令来安装它:
sudo ./configure
sudo make
sudo make install
在 Ubuntu 上,我尝试使用 Linux GCC 编译“HelloWorld.c”可执行 HelloWorld 文件。 Valgrind 运行没有任何问题。
然后我在使用 ARM-Linux 交叉编译器编译的可执行文件上尝试它(此可执行文件被编译为在嵌入式设备上运行),并收到此错误:
valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory
我在谷歌上进行了挖掘,但找不到太多信息,我尝试了:
export VALGRIND_LIB=/usr/local/lib/Valgrind
它仍然显示相同的错误,我做错了什么?
答案1
Valgrind 正在尝试为“memcheck”工具启动一个合适的可执行文件,但找不到。这是因为'./configure' 脚本创建了一个 Makefile,可用于安装特定于主机架构(您的 PC)的 valgrind 软件包,但您正在为其提供一个适用于另一个架构(在您的情况下为 ARM)的可执行文件;这会导致您缺乏 ARM 特定工具来完成这项工作。我在“callgrind”工具(也是 valgrind 包的一部分)中遇到了类似的问题,通过执行 strace,我得到了以下行:
execve("/usr/local/lib/valgrind/callgrind-arm-linux", ["valgrind", "--tool=callgrind", "Application.STM.out"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
这意味着我错过了 ARM 特定的 callgrind 二进制文件。
详细说明一下,您(和不久前的我)正在尝试做的事情不受 valgrind 支持,因此您想使用模拟器来做您想做的事情。