如何在ARMv5平台上构建Valgrind?

4

我需要调试一个多线程程序,但总是出现严重的分段错误,所以我选择了Valgrind。然而问题在于,这段代码是交叉编译并在ARMv5机器上运行的。我尝试为该架构构建Valgrind,但configure失败了,因为该版本不支持:

$ CC=arm-linux-gnueabi-gcc  ./configure --prefix=/opt/valgrind     \
  --host=armv5-none-linux-gnueabi --target=arm-none-linux-gnueabi  \
  --build=i386-ubuntu-linux

(...)
checking for a supported CPU... no (armv5)
configure: error: Unsupported host architecture. Sorry

有没有解决这个问题的方法?是否可以以某种方式编译为ARMv7(我读到它完全支持),并在我的平台上使用它?我发现了这个问题,但它是两年前提出的,答案指向旧版本Valgrind的补丁。


相关链接:https://dev59.com/olLTa4cB1Zd3GeqPWged#4336133 - Victor Sergienko
2个回答

5

如果您为ARMv5指令集CPU编译valgrind,则无法运行它,因为valgrind仅在ARMv7 CPU上运行。

Valgrind交叉编译ARMv5tel

自“Release 3.6.0(2010年10月21日)”以来,似乎已添加了ARM支持:

http://valgrind.org/docs/manual/dist.news.html

即使它支持旧的指令集,它也必须在ARMv7 CPU上运行。

我为ARMv5编译了valgrind,但它无法运行,会抛出“非法指令”的错误。

https://community.nxp.com/message/863066?commentID=863066#comment-863066


1
它也在官方文档中:http://valgrind.org/info/platforms.html ARM/Linux: 自 ARMv7 起支持。 - Victor Sergienko

0
在配置文件中将“armv7 *”更改为“arm”,然后您的编译将成功。

1
是的,但生成的可执行文件实际上无法在armv5上运行。 - bevis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接