首页 > 其他分享 >交叉编译Valgrind

交叉编译Valgrind

时间:2024-06-22 19:09:27浏览次数:23  
标签:xml ld 交叉 valgrind Valgrind 编译 so linux arm

参考:

  1. https://www.cnblogs.com/yucloud/p/armbuild_valgrind3.html
  2. https://blog.csdn.net/Reasonss/article/details/111218224

源码下载地址

valgrind3.23.0 https://valgrind.org/downloads/current.html

安装依赖

sudo apt-get install libc6-dbg
sudo apt-get install automake

编译

#!/bin/sh
echo "设置环境变量"
export SRCROOT=${PWD}/..
export CC_PATH=${SRCROOT}/cross_compiler/arm-fsl-linux-gnueabi
export CROSS_COMPILE=${CC_PATH}/bin/arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export CPP=${CROSS_COMPILE}cpp
export LD=${CROSS_COMPILE}ld
export AR=${CROSS_COMPILE}ar

./autogen.sh

./configure --prefix=${SRCROOT}/target-valgrind --host=arm-linux-gnueabi CFLAGS="-fPIC" CXXFLAGS="-fPIC" --enable-only32bit --enable-inner --enable-lto --enable-tls
echo "开始编译"
make -j4
echo "开始编译安装"
make -j4 install
#   若需要精简 参考精简部分  再进行打包
tar -czvf ../target-valgrind.tar.gz ../target-valgrind  Inst/
echo "build and tar successful at: ../target-valgrind.tar.gz"

精简

rm -r  /usr/local/valgrind/shared
rm -r  /usr/local/valgrind/include

精简/usr/local/valgrind/lib/valgrind目录,精简后如下.

32bit-core-valgrind-s1.xml   32bit-sse.xml                arm-with-vfpv3.xml
32bit-core-valgrind-s2.xml   arm-core-valgrind-s1.xml     default.supp
32bit-core.xml               arm-core-valgrind-s2.xml     getoff-arm-linux
32bit-linux-valgrind-s1.xml  arm-core.xml                 memcheck-arm-linux
32bit-linux-valgrind-s2.xml  arm-vfpv3-valgrind-s1.xml    vgpreload_core-arm-linux.so
32bit-linux.xml              arm-vfpv3-valgrind-s2.xml    vgpreload_memcheck-arm-linux.so
32bit-sse-valgrind-s1.xml    arm-vfpv3.xml
32bit-sse-valgrind-s2.xml    arm-with-vfpv3-valgrind.xml

上传至开发板

/opt/

运行脚本

run_valgrind3.sh

#!/bin/sh

#   tar -zxvf target-valgrind.tar.gz
#   ld 库上传至开发板 /opt
#   chmod +x /opt/ld-*.so

export VALGRIND_LIB=/opt/target-valgrind/libexec/valgrind && /opt/target-valgrind/bin/valgrind --tool=memcheck --leak-check=full /opt/ld-2.11.1.so  $@

运行示例

./run_valgrind3.sh your_exec your_args0 your_args1

附录

附上$@的含义
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

错误解决

memcheck 报错

报错信息:valgrind: failed to start tool 'memcheck' for platform 'arm64-linux': No such file or directory
这个需要声明运行库的变量

export VALGRIND_LIB=/opt/target-valgrind/libexec/valgrind

cannot be set up 报错

这个问题是程序本身没有包含所有调试信息的原因。
要么程序完全加入调试信息(包括动静态库),要不程序编译的时候加gcc参数-g调试信息,并且也把带调试信息的libc放入板子。
在x86主机的arm交叉编译工具链路径搜索

find . -name "*ld*.so"
./arm-fsl-linux-gnueabi/multi-libs/armv5te/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/armv7-a/thumb/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/armv7-a/vfpv3/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/armv7-a/neon/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/armv7-a/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/armv6/lib/ld-2.11.1.so
./arm-fsl-linux-gnueabi/multi-libs/armv6/vfp/lib/ld-2.11.1.so
./imports/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin.so
./plugins/qmltooling/libqmldbg_inspector.so
./plugins/qmltooling/libqmldbg_tcp.so

file ./arm-fsl-linux-gnueabi/multi-libs/lib/ld-*
./arm-fsl-linux-gnueabi/multi-libs/lib/ld-2.11.1.so:  ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped
./arm-fsl-linux-gnueabi/multi-libs/lib/ld-linux.so.3: symbolic link to ld-2.11.1.so

然后把它放到板子上即可

chmod +x ./opt/ld-2.11.1.so

标签:xml,ld,交叉,valgrind,Valgrind,编译,so,linux,arm
From: https://www.cnblogs.com/wang-lp/p/18262635

相关文章

  • Ubuntu 24.04 编译 PHP 8.0
    PKG_CONFIG_PATH=/usr/local/openssl111w/lib/pkgconfigOPENSSL_CONF=/usr/local/openssl111w/ssl/openssl.cnf./configure--prefix=/usr/local/php80--enable-fpm--with-fpm-user=www-data--with-fpm-group=www-data--enable-phpdbg--disable-short-tags--wit......
  • Cocos 编译发布微信小程序
     微信小游戏不允许远程加载脚本,所以这里会和其他web的打包生成的不一样然后把remote文件夹拷贝到服务器上,让文件资源域名指向remote的上一级,然后可以通过域名:/remote/main访问到config.json即可 ......
  • 【全拓展】编译器设置
    在DEV-C++中可以进行一些编译器设置,是很必要的本篇文本是全拓展文本一、语言DEV-C++一开始是英文版的,我们要将他改为中文版,怎么办?点击按钮"Tools",打开菜单点击下面的第二个按钮选择“Language”往上看选择以下选项最后点击OK按钮(可能会弹出提示,直接选择确定)二、缺......
  • glibc库的交叉编译及使用
    1.环境准备宿主系统:ubuntu10.04交叉编译工具:arm-fsl-linux-gnueabi版本4.4.4下载glibc的源码包:ftp://ftp.gnu.org/gnu/glibc/glibc-2.11.1.tar.gz下载glibc-ports的源码包:ftp://ftp.gnu.org/gnu/glibc/glibc-ports-2.11.tar.gz2.分别解压缩文件:把glibc-ports-2.11文件夹......
  • Android14适配编译问题
    问题:AAPT2processunexpectedlyexit.Erroroutput:aapt2W06-2609:56:2382808280LoadedArsc.cpp:682]Unknownchunktype‘200’.解决:将Gradle版本升级至8.0.1以上问题:Task:app:shrinkReleaseResFAILEDExecutionfailedfortask‘:app:shrinkReleaseRes’.A......
  • 信道编码——Turbo码Matlab编译码实现与性能分析
    第三篇博客感言“不要成为一个只会用Matlab仿真SNR-BER的猴子。”前段时间比较焦虑就业,到处搜索通信的就业情况。很多人说通信日薄西山,不无道理,与前十几二十年相比,现在的确是哑火了,5G、6G带来的变革远不如3G、4G那么震撼,并且电子信息专业学生越来越多,就业岗位和待遇却不见......
  • python pyinstaller打包的exe 反编译问题记录 破解加密
    首先是用pyinstxtractor这个网上很多教程,不详说了。生成一个xxx.exe_extracted目录生成过程中,如果pyinstaller用key加密了,会[!]Error:FailedtodecompressPYZ-00.pyz_extracted\Cython\__init__.pyc,probablyencrypted.Extractingasis. 这个说是fail了,其实可以解......
  • C++程序编译 错误提示和评测状态
    编译常见错误提示1.[Error]expected';'before'cout'。在cout前面,缺少一个分号。2.[Error]'arr'wasnotdeclaredinthisscope。未定义变量名arr。3.[Error]ldreturned1exitstatus。重复运行错误(上一个运行的程序,输入窗口没有关掉)。  或者main写错了。......
  • Chromium 开发指南2024 Mac篇-编译前的准备工作(一)
    1.引言Chromium是一款开源的网页浏览器项目,作为GoogleChrome浏览器的基础,其卓越的性能和广泛的应用使其成为众多开发者研究和学习的对象。对于希望深入了解浏览器内核,或是计划在Chromium基础上开发自定义浏览器的开发者来说,掌握Chromium的编译和开发流程是至关重要的......
  • 【MT9669】PM51代码编译环境安装及使用案例
    最近在调试GPIO开机时,发现一直配置不通,排查到最后是因为导入支持PMUART开机改到的PM.bin文件把GPIO开机功能屏蔽掉了,回退后验证配置GPIO唤醒开机是能实现的。于是综合确认后,需要改到PM.bin文件,下面是相应的编译环境安装及针对本需求做的处理流程:1.在Windows操作系统下,双击“c......