海思3559A上编译Valgrind源码操作步骤

注:按照以下步骤可以在海思板子上正常编译valgrind源码并生成valgrind可执行文件,但可能还不能在海思板子上正常使用。

1. 从http://valgrind.org/downloads/?src=www.discoversdk.com 下载Valgrind 3.15.0即valgrind-3.15.0.tar.bz2;

2. 在valgrind-3.15.0目录下,创建一个build.sh脚本文件,内容如下:

./configure \
	--prefix="$PWD/install" \
	CC=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc \
	CXX=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++ \
	CPP=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-cpp \
	AR=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-ar \
	--target=aarch64-himix100-linux \
	--host=aarch64-himix100-linux \
	--program-prefix=hisi-

3. 依次执行如下命令后,会在当前install目录下生成bin, include, lib, libexec, share五个目录,每个目录的内容如下图所示

./build.sh
make -j8
make install

4. 将install/bin目录下的可执行文件hisi-valgrind拷贝到海思板子上,将install/lib目录下的valgrind目录也拷贝到海思板子上,此目录下包含了执行hisi-valgrind时需要的库,然后依次执行如下命令,结果如下图所示:

export VALGRIND_LIB=valgrind/
./hisi-valgrind --version

5. 测试代码main.cpp如下:

#include <stdio.h>
#include <iostream>

namespace {

void func1() {
	int* p1 = new int[10];
}

void func2() {
	int* p2 = new int[5];
}

} // namespace

int main()
{
	fprintf(stdout, "test start\n");
	func1();
	func2();
	fprintf(stdout, "test finish\n");
}

6. 执行如下命令,生成可执行文件main:

/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++ -g -o main main.cpp

7. 将可执行文件main拷贝到海思板子上,执行如下命令 ,结果如下图所示:

./hisi-valgrind --tool=memcheck --leak-check=full ./main

从上图中可以看出编译好的hisi-valgrind还是不能在海思板子上直接使用,可以参考http://www.ebaina.com/blog/show.php?itemid=307 和https://www.ebaina.com/articles/140000002852中的方法试着处理下,本人未验证。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值