交叉编译valgrind

valgrind编译注意事项:

1. --prefix的路径必须和手机上实际运行的目录是一致的,不然运行valgrind会报错:

failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory"

2. 用ndk-r11c,valgrind版本3.12,编译出来在android6.0上跑,结果总是显示有泄露,运行不正确。

 

todo:

1. 需要查看具体内存泄露的代码行号,需要在编译时带上-g选项,同时执行的程序必须是带调试符号的版本。

2. /data/local/Inst/bin/valgrind -v --error-limit=no --trace-children=yes --log-file=/sdcard/valgrind.log.%p --tool=memcheck --leak-check=full --show-reachable=yes /data/local/tmp/test_demo

 

交叉编译步骤:

1. 编写valgrind交叉编译脚本build.sh,并执行,然后生成makefile:

export NDKROOT=/Users/xxx/Library/Android/android-ndk-r11c
export ABI_DIR=arm-linux-androideabi-4.9
export ARCH=arm-linux-androideabi
export HWKIND=generic
#export VALGRIND_LIB=/data/local/valgrind/lib/valgrind/
# Set up toolchain paths.
#
# For ARM

export AR=$NDKROOT/toolchains/$ABI_DIR/prebuilt/darwin-x86_64/bin/$ARCH-ar
export LD=$NDKROOT/toolchains/$ABI_DIR/prebuilt/darwin-x86_64/bin/$ARCH-ld
export CC=$NDKROOT/toolchains/$ABI_DIR/prebuilt/darwin-x86_64/bin/$ARCH-gcc
export CXX=$NDKROOT/toolchains/$ABI_DIR/prebuilt/darwin-x86_64/bin/$ARCH-g++

export RANLIB=$NDKROOT/toolchains/$ABI_DIR/prebuilt/darwin-x86_64/bin/$ARCH-ranlib
export STRIP=$NDKROOT/toolchains/$ABI_DIR/prebuilt/darwin-x86_64/bin/$ARCH-strip


#export AR=$NDKROOT/toolchains/llvm/prebuilt/darwin-x86_64/bin/armeabi-v7a/
#export LD=$NDKROOT/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-link
#export CC=$NDKROOT/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang
#export CXX=$NDKROOT/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++

#export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-ranlib
#export STRIP=$NDKROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-strip
#

# for ARM
CPPFLAGS="--sysroot=$NDKROOT/platforms/android-21/arch-arm -DANDROID_HARDWARE_$HWKIND" \
CFLAGS="--sysroot=$NDKROOT/platforms/android-21/arch-arm" \
   ./configure --prefix=/data/local/Inst --host=armv7-unknown-linux --target=armv7-unknown-linux --with-tmpdir=/sdcard
# note: on android emulator, android-14 platform was also tested and works.
# It is not clear what this platform nr really is.
#CPPFLAGS="--sysroot=$NDKROOT/platforms/android-23/arch-arm64" \
   #CFLAGS="--sysroot=$NDKROOT/platforms/android-23/arch-arm64" \
   #./configure --prefix=/data/local/Inst \
   #--host=aarch64-unknown-linux --target=aarch64-unknown-linux \
   #--with-tmpdir=/sdcard

2. make

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值