我需要调试一个多线程程序,它不断抛出可怕的分段错误,我选择 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(我读完是完全支持的),并在我的平台中使用它?我找到了this question,但两年前就被问过,答案指向旧版Valgrind的补丁。
答案 0 :(得分:5)
如果您为ARMv5指令集CPU编译valgrind,则无法运行它,因为valgrind仅在ARMv7 CPU上运行。
Valgrind cross compilation for ARMv5tel
自从"版本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 :(得分:0)
在配置文件中将“armv7 *”更改为“arm”,然后编译将成功。