RV1126交叉编译valgrind工具

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

开发板上部署 valgrind 的文件结构

  • userdata
    • valgrind
      • bin
      • lib
      • libexec

配置权限

本部分的命令均在开发板的命令终端内进行,需要配置的是新上传的 valgrind 在开发板上的权限。

首先需要配置 valgrind 链接库的环境变量,这里有两种方案,一种是临时性的,只在当前命令终端内有效,另一种是永久性的。

# 临时性配置
export VALGRIND_LIB=/userdata/valgrind/libexec/valgrind

# 永久性配置
vi /etc/preofile.d/RkEnv.sh
export VALGRIND_LIB=/userdata/valgrind/libexec/valgrind     将本条命令添加至 RkEnv.sh 内

随后,配置 valgrind 的执行权限

# 配置 valgrind 的执行权限

cd /userdata/valgrind/bin/
chmod a+x ./valgrind

最后,由于 valgrind 的执行需要诸如 memcheck 或 helgrind 的配合,因此还需要给 memcheck-arm- linux 与 helgrind-arm-linux 相应的执行权限。

chmod +x /userdata/valgrind/libexec/valgrind/memcheck-arm-linux

chmod +x /userdata/valgrind/libexec/valgrind/helgrind-arm-linux

测试效果

# 由于 valgrind 不在系统命令集内,所以在使用时需要指定它所在的路径
/userdata/valgrind/bin/valgrind --version

# 利用 valgrind 的 memcheck 对 /root/ 路径下的 test 可执行文件的内存进行分析,并将分析结果记录在当前 /root/ 路径下的 log.txt 内
/userdata/valgrind/bin/valgrind --tool=memcheck --leak-check=full --track-origins=yes  --log-file=/root/log.txt --show-reachable=yes /userdata/app

至此,RV1126 交叉编译 valgrind 工具的过程便结束了,关于 valgrind 的使用,之后单独写一篇文章进行记录总结。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇