交叉编译mips平台上valgrind

STEP 1:
下载最新版本的valgrind:
http://www.valgrind.org/downloads/valgrind-3.9.0.tar.bz2

目前支持的平台,在官网上列表如下:
{x86,amd64,arm,ppc32,ppc64,s390x,mips32,mips64}-linux, arm-android (2.3 and later), x86-android (4.0 and later) and {x86,amd64}-darwin (Mac OS X 10.7, with limited support for 10.8).

STEP 2:
首先要配置编译选项,选择你的目标平台,因为我是在mips32平台上运行,所以配置如下:
./configure --host=mips-linux-gnu --prefix=/home/wupeng/workspace/valgrind/bin --program-prefix=mips-linux-gnu- CFLAGS="-EL" LDFLAGS="-EL"
注意:大小端的问题;刚开始配置没有注意这个,运行总是报语法错误,后来运行file命令查看,发现与正常运行的程序差异在于这块;

1 $ file mips-linux-gnu-valgrind

2 mips-linux-gnu-valgrind: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked (uses shared libs), for GNU/Linux 2.6.12, with unknown capability 0xf41 = 0x756e6700, not stripped

 

STEP 3:
生成Makefile后,直接编译即可;在编译过程中,会遇到卡在一个地方过不支,需将drd/Makefile中-O2修改为-O1:

1 DRD_CFLAGS = \

2 --param inline-unit-growth=900 \

3 -O1 \

4 -Wextra \

5 -Wformat-nonliteral \

6 -Wno-inline \

7 -Wno-unused-parameter

 

STEP 4:
安装,然后将执行文件copy到开发板上;需要注意的安装目录与你要拷贝到开发板上的路径要完全一致;
这点很重要,因为在编译时路径的hardcode已经在程序中了,如果不一致,运行时会提示找不到文件:

ex.
在host上,我编译安装valgrind的路径是:/home/wupeng/valgrind/bin, 那么将valgrind拷贝到开发板上的路径也要是这个,程序才能正确执行;

STEP 5:
运行valgrind, 后面跟上要运行的文件即可;

你可能感兴趣的:(val)