海思3559A上編譯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

8. 從上圖中可以看出編譯好的hisi-valgrind還是不能在海思板子上直接使用,在http://www.ebaina.com/blog/show.php?itemid=307 中給出了處理方法,後面再進一步實驗下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章