Valgrind交叉编译(踩坑)

一、前言

最近由于项目的需要,要交叉编译Valgrind到板子上使用,在这个过程中遇到了一些坑,在此记录一下,别人遇到的话也可以看看

二、步骤

配置编译过程

整体上的步骤和网络上的方法是一样的,我一开始也是在网络上搜索来进行的,最开始的找到一篇文章添加链接描述
遇到的问题:这篇文章中使用的Valgrind是3.12.0版本的,这个版本下的configure支持的架构比较少,而且也没有文中说的修改armv7的地方,一开始在这个地方耽搁了一些时间,在网络上寻找方法,最终也是无果。

于是下载了最新的版本valgrind-3.19.0再次进行

导入交叉编译工具链的路径

export PATH=$PATH:/book/9-project/rel-j5-cs-v1.0-LNX5.10_REL_CS_PL3.0_2022081004/platform_sdk/prebuilts/host/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin

这里再次遇到一个问题,就是配置不对,错误的配置如下

  ./configure --host=armv7-linux CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ AR=aarch64-linux-gnu-ar --prefix=/opt/valgrind-3.19.0

网络上大部分的方式都是这样来配置的,这样执行configure是可以成功的,但是配置之后进行编译的时候就会出现问题,如下
在这里插入图片描述
在这里插入图片描述
在make的时候出现如上的问题,不懂这个是什么意思,于是在网上寻找答案,大概意思是说无法进行交叉编译,但是没有有用的解决方法

无奈,继续寻找新的解决思路,终于看到一篇文章,给了一种新的配置方式

 export CROSS_COMPILE=aarch64-linux-gnu-
 export CC=${CROSS_COMPILE}gcc
 export CPP=${CROSS_COMPILE}cpp
 export CXX=${CROSS_COMPILE}g++
 export LD=${CROSS_COMPILE}ld
 export AR=${CROSS_COMPILE}ar

 ./configure --target=aarch64-linu --host=aarch64-linux --prefix=/opt/valgrind-3.19.0

区别就是在于设置target不再是"armv7-linux"了,而是设置成和交叉编译工具链一样的平台了。
可以成功进行配置,神奇的是make也不再报错了,终于看到希望了!

运行过程

但是,不出意外的是意外还是出现了,make install之后,在配置的时候的路径下面生成了编译的结果,于是把它拷贝到板子上运行,出现

valgrind: failed to start tool 'memcheck' for platform 'arm64-linux': No such file or directory
解决方案有两种:

1、按照上述编译期间环境配置中的 --prefix 的路径保证目标板上的路径一致,如果不确定可以打开 valgrind//lib/pkgconfig/valgrind.pc 文件查看,
第一行的 prefix= 为编译安装后的路径
2、在目标板上设置 valgrind 的环境变量:export VALGRIND_LIB=/mnt/valgrind/lib/valgrind(根据自己存放的 valgrind 路径修改)

重点看第二种方法,其实就是这个路径不对,导致运行出错
这里很坑的地方就是Valgrind运行依赖另一个程序,这个程序就是memcheck-arm64-linux,这个程序所在的路径也必须要指明才行

在上传的文件夹里寻找这个文件,

root@xxx# find . -name memcheck-arm64-linux
./valgrind-3.19.0/libexec/valgrind/memcheck-arm64-linux

果然是有的,于是按照说明指定它的路径

export VALGRIND_LIB=$PATH:/userdata/valgrind-3.19.0/libexec/valgrind/memcheck-arm64-linux

这样就可以了
在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值