当前位置: 技术问答>linux和unix
关于valgrind-3.8.1的交叉编译
来源: 互联网 发布时间:2017-05-23
本文导语: 开发中碰到了一个棘手的问题,加入一个动态库后会引起程序被kill掉,怀疑是内存溢出导致的。网上查找了下valgrind可以检测内存是否越界,因此编译了该工具(不直接编译GCC是因为项目中用到较多的依赖库,而且库...
开发中碰到了一个棘手的问题,加入一个动态库后会引起程序被kill掉,怀疑是内存溢出导致的。网上查找了下valgrind可以检测内存是否越界,因此编译了该工具(不直接编译GCC是因为项目中用到较多的依赖库,而且库是由其它部门来实现的,如果要直接使用GCC来检测需要其他部门都来配合,目前想通过内部解决该问题)。
configure 配置:
./configure --host=mipsel-linux-uclibc CC=mipsel-linux-uclibc-gcc CPP=mipsel-linux-uclibc-cpp CXX=mipsel-linux-uclibc-g++
make后出现如下问题:
mipsel-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_mips32=1 -DVGO_linux=1 -DVGP_mips32_linux=1 -DVGPV_mips32_linux_vanilla=1 -I../coregrind -DVG_LIBDIR=""/usr/local/lib/valgrind"" -DVG_PLATFORM=""mips32-linux"" -mips32 -g -Wno-long-long -MT libcoregrind_mips32_linux_a-m_trampoline.o -MD -MP -MF .deps/libcoregrind_mips32_linux_a-m_trampoline.Tpo -c -o libcoregrind_mips32_linux_a-m_trampoline.o `test -f 'm_trampoline.S' || echo './'`m_trampoline.S
m_trampoline.S: Assembler messages:
m_trampoline.S:1040: Error: illegal operands `li $v0,(4000+119)'
m_trampoline.S:1047: Error: illegal operands `li $v0,(4000+193)'
m_trampoline.S:1059: Error: illegal operands `li $v0,0'
m_trampoline.S:1063: Error: illegal operands `addi $v0,$v0,1'
m_trampoline.S:1064: Error: illegal operands `addi $a0,$a0,1'
m_trampoline.S:1066: Error: illegal operands `lbu $t0,($a0)'
m_trampoline.S:1067: Error: illegal operands `bne $t0,$zero,strlen_loop'
make[3]: *** [libcoregrind_mips32_linux_a-m_trampoline.o] Error 1
make[3]: Leaving directory `/home/valgrind-3.8.1/coregrind'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/valgrind-3.8.1/coregrind'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/valgrind-3.8.1'
make: *** [all] Error 2
是否有人碰到这样的问题,希望高手出现。。。
注:源码是刚从官网上下载的。
configure 配置:
./configure --host=mipsel-linux-uclibc CC=mipsel-linux-uclibc-gcc CPP=mipsel-linux-uclibc-cpp CXX=mipsel-linux-uclibc-g++
make后出现如下问题:
mipsel-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_mips32=1 -DVGO_linux=1 -DVGP_mips32_linux=1 -DVGPV_mips32_linux_vanilla=1 -I../coregrind -DVG_LIBDIR=""/usr/local/lib/valgrind"" -DVG_PLATFORM=""mips32-linux"" -mips32 -g -Wno-long-long -MT libcoregrind_mips32_linux_a-m_trampoline.o -MD -MP -MF .deps/libcoregrind_mips32_linux_a-m_trampoline.Tpo -c -o libcoregrind_mips32_linux_a-m_trampoline.o `test -f 'm_trampoline.S' || echo './'`m_trampoline.S
m_trampoline.S: Assembler messages:
m_trampoline.S:1040: Error: illegal operands `li $v0,(4000+119)'
m_trampoline.S:1047: Error: illegal operands `li $v0,(4000+193)'
m_trampoline.S:1059: Error: illegal operands `li $v0,0'
m_trampoline.S:1063: Error: illegal operands `addi $v0,$v0,1'
m_trampoline.S:1064: Error: illegal operands `addi $a0,$a0,1'
m_trampoline.S:1066: Error: illegal operands `lbu $t0,($a0)'
m_trampoline.S:1067: Error: illegal operands `bne $t0,$zero,strlen_loop'
make[3]: *** [libcoregrind_mips32_linux_a-m_trampoline.o] Error 1
make[3]: Leaving directory `/home/valgrind-3.8.1/coregrind'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/valgrind-3.8.1/coregrind'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/valgrind-3.8.1'
make: *** [all] Error 2
是否有人碰到这样的问题,希望高手出现。。。
注:源码是刚从官网上下载的。
|
抱歉,我刚才抽空给我的9100手机交叉编译了一个valgrind-3.8.1,没难度,直接编成功了,没有遇到你说的问题。不过这个是arm的,你的是mips的。
./configure --prefix=/home/rebi/cross_tools/valgrind-3.8.1/_install --host=arm-unknown-linux-gnueabi
./configure --prefix=/home/rebi/cross_tools/valgrind-3.8.1/_install --host=arm-unknown-linux-gnueabi
|
可能是valgrind不支持你的芯片架构,或者某些编译指令不对。
我以前也想交叉编译个valgrind,但它不支持ARM9(ARMv5架构),支持ARMv7架构。
仅是个人意见,不对请见谅。
我以前也想交叉编译个valgrind,但它不支持ARM9(ARMv5架构),支持ARMv7架构。
仅是个人意见,不对请见谅。