valgrind是一款功能强大的开源工具,主要用于内存调试、 内存泄漏检测、性能分析以及线程错误的检测。本文用于记录在x86的 Ubuntu 虚拟机上对RV1126开发板的valgrind进行交叉编译的过程。
下载源码
进入下面网址下载valgrind的源码,这里选择的版本是3.23.0
wget https://sourceware.org/pub/valgrind/valgrind-3.23.0.tar.bz2
解压缩源码
tar -xvf valgrind-3.23.0.tar.bz2
cd valgrind-3.23.0
修改configure文件
为了避免编译的过程报错,需要修改configure文件的源码实现。这里可以搜索关键词“VGCONF_PLATFORM_ARM_ARCH”,找到下面的段落进行修改。
# 修改前
armv7*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
printf "%s\n" "ok (${host_cpu})" >&6; }
VGCONF_PLATFORM_ARM_ARCH="-marm -mcpu=cortex-a8"
ARCH_MAX="arm"
;;
# 修改为
armv7* | arm)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
printf "%s\n" "ok (${host_cpu})" >&6; }
VGCONF_PLATFORM_ARM_ARCH="-marm -mcpu=cortex-a8"
ARCH_MAX="arm"
;;
生成配置文件
./configure --host=arm-none-linux-gnueabihf CC=/home/hf/1126/rv1126_rv1109_linux/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc --prefix="$PWD/_install"
1
编译并安装到_install目录
make
make install
上传RV1126开发板并测试
文件部署开发板
生成的文件目录结构如下,需要将其中的 bin、include、lib 以及 libexec 四个文件夹拷贝到开发板中。由于需要不小的存储空间,因此这里在开发板的 /userdata/ 目录下新建一个 valgrind 文件夹,用于存放以上四个文件夹。
虚拟机上的编译生成文件结构
- _install
- bin
- include
- lib
- libexec
- share