使用交叉编译的Valgrind


12

我已经从Valgrind主干下载了源代码,并将其构建为可在由ARM926(ARMv5t架构)支持的嵌入式Linux系统(Montavista Linux)上使用。一切运行良好,直到我尝试运行它以检查我已完成的某些应用程序为止。瓦尔格朗德告诉我:

“ valgrind:无法为平台“ arm-linux”启动工具“ memcheck”:没有此类文件或目录”。

尝试运行任何其他工具都会给出相同的消息。对于make install,我使用--prefix选项指向通过NFS挂载的嵌入式系统的文件系统(例如--prefix = / home / NFS_ Mounted / opt / valgrind)。我检查了安装位置,其中的lib目录包含正确的工具;我还检查了Valgrind的相应pkgconfig文件,它似乎还可以,所以我现在有点笨拙,无法弄清楚出了什么问题。2个问题:

  1. 这样使用/安装交叉编译的Valgrind是否正确?也许我在设置方面做错了,或者也许我缺少了涉及主机系统的某些东西(例如gdb / gdbserver)。
  2. 有没有人尝试过在ARM体系结构上运行它?我知道该支持是最近才开始的,所以我想知道是否可以取得不错的结果。

Answers:


15

在目标设备中运行此命令

export VALGRIND_LIB=~/valgrind/lib/valgrind/

其中./valgrind安装的目录路径(在给定的./configure


4

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

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


它如何寻找那条道路?pkgconfig包含正确的目标路径,因此它尝试从哪里获取?
celavek

我认为它已被编译。./configure脚本生成一个config.h头文件,该文件应包含前缀路径。
克里斯托夫·普罗沃斯特

2

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

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

今天对我有用:)。


.in_place在文件夹中缺少。
ArmenB 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.