使用交叉编译的 Valgrind

使用交叉编译的 Valgrind

我已经从 Valgrind 主干下载了源代码,并将其构建为在由 ARM926(ARMv5t 架构)支持的嵌入式 Linux 系统(Montavista Linux)上使用。一切都很顺利,直到我尝试运行它来检查我制作的一些应用程序;瓦尔格林德告诉我:

“valgrind:无法启动平台‘arm-linux’的工具‘memcheck’:没有这样的文件或目录”。

尝试运行任何其他工具都会给出相同的消息。为了进行安装我使用 --prefix 选项指向通过 NFS 安装的嵌入式系统的文件系统(例如 --prefix=/home/NFS_mounted/opt/valgrind)。我检查了安装位置和那里的目录包含适当的工具;我还检查了 Valgrind 相应的 pkgconfig 文件,似乎没问题,所以我现在有点无能为力,无法弄清楚出了什么问题。 2个问题:

  1. 像这样使用/安装交叉编译的 Valgrind 是否正确?也许我在设置方面做错了什么,或者可能有一些涉及我缺少的主机系统(gdb/gdbserver之类)。
  2. 有人尝试过在 ARM 架构上运行它吗?我知道该支持是最近才提供的,所以我想知道我是否可以获得不错的结果。

答案1

在目标设备中运行此命令

export VALGRIND_LIB=~/valgrind/lib/valgrind/

./valgrind安装目录路径在哪里(在 中给出./configure

答案2

问题是“valgrind”正在寻找不同的可执行文件来运行真正的检查。它使用您在配置时指定的安装路径,该路径与目标上的路径不同。

您应该能够通过在目标上创建指向“/”的符号链接 /home/NFS_mounted 来确认这一点。

答案3

将 VALGRIND_LIB 放入 amd64-linux 目录的父目录中。例如:

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

今天对我有用:)。

答案4

所提出的解决方案都不适合我,因此我启用了所有可选模块:

./configure --enable-only64bit --enable-inner --enable-lto --enable-tls

瞧,它成功了。

相关内容