为Android构建Valgrind

5
在Ubuntu 12.04上使用ndk-r6或ndk-r8d构建valgrind-3.8.1时,出现以下错误:
...
cc1: Error: not rekognized option "-marm"
priv/main_globals.c:1:0: Error: wrong Value (cortex-a8) for -mtune=switch
...

我的构建脚本:

export NDKROOT=/home/stefan/android-ndk-r6-crystax-2
export HWKIND=generic
PATH=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin:$PATH
PATH=$PATH:$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/libexec/gcc/arm-linux-androideabi/4.4.3
export CROSS_COMPILE=arm-linux-androideabi-
export AR=${CROSS_COMPLIE}ar
export LD=${CROSS_COMPLIE}ld
export CC=${CROSS_COMPLIE}gcc
export CXX=${CROSS_COMPLIE}g++
export CPP=${CROSS_COMPLIE}cpp

./autogen.sh CPPFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm -DANDROID_HARDWARE_$HWKIND" CFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm"
./configure --prefix=/data/local/Inst --host=armv7-unknown-linux --target=armv7-unknown-linux --with-tmpdir=/tmp

最后,
make    

:)

有什么想法吗?谢谢

同时我也会接受已构建的二进制文件;))


在Android源代码树中有一个可用于Valgrind的Android.mk。请参见https://android.googlesource.com/platform/external/valgrind/+/master/main。 - Michael
嗯...但是如何编译它呢?放在jni文件夹里吗?这样,Android.mk中没有定义包含路径,构建失败了:( - oc1d
可能是Android valgrind build fails的重复问题。 - tonylo
我已经成功地为Android构建了Valgrind。如果您需要工作二进制文件,请告诉我。顺便说一句,它也可以在非root设备上运行。 - learn_develop
2个回答

10

2
请按照以下步骤操作: http://valgrind.org/docs/manual/dist.readme-android.html 不要为您的应用程序编译嵌入式的valgrind,而是在计算机上编译一个与android-ndk库链接的arm兼容的valgrind二进制文件,然后将valgrind打包到设备或模拟器上的某个文件夹中。这大约需要130 Mb的数据。
请注意,设备必须已经rooted。
然后,每当您想要在android应用程序中运行valgrind时,您都需要将valgrind附加到该应用程序。有关详细信息,请参见:如何使用valgrind启动android应用程序

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接