android - 为 android 构建 valgrind 时未定义 __ANDROID__

标签 android linux valgrind configure autoconf

当我尝试为 android 配置 valgrind 时,我得到:

  Platform variant: vanilla
  Primary -DVGPV string: -DVGPV_arm_linux_vanilla=1

我通过查看 configure.in 发现一定是这种情况,因为:

AC_EGREP_CPP([BIONIC_LIBC], [
#if defined(__ANDROID__)
  BIONIC_LIBC
#endif
],
GLIBC_VERSION="bionic")

GLIBC_VERSION 未设置为“仿生”,因此不得定义 __ANDROID__。我怎样才能解决这个问题?我正在运行的命令是:

export NDKROOT='/home/matt/Desktop/android-ndk-r6' 
export HWKIND=emulator
export AR=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ar
export LD=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ld
export CC=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
cd '/home/matt/Desktop/valgrind-3.8.1' 
./autogen.sh
CPPFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm -DANDROID_HARDWARE_$HWKIND"    CFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm"    sudo ./configure --prefix=/data/local/Inst    --host=armv7-unknown-linux --target=armv7-unknown-linux    --with-tmpdir=/sdcard

关于我正在构建的机器的信息:

Kernel      : Linux 3.2.0-23-generic (x86_64)
Default C Compiler      : GNU C Compiler version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
Distribution        : Linux Mint 13 Maya

编辑:我确认直接运行 $CC 时,定义了 __ANDROID__。所以 ./configure 没有使用 $CC?

编辑 2:将 CC=$CC LD=$LD AR=$AR 添加到配置中会得到 configure: error: C compiler cannot create executables

最佳答案

要使其正常工作,您需要将传递给 ./configure 脚本的参数更改为:

sudo ./configure --prefix=/data/local/Inst --host=armv7-unknown-linux\
        --target=armv7-unknown-linux --with-tmpdir=/sdcard0\
        CPPFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm -DANDROID_HARDWARE_$HWKIND"\
        CFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm"\
        CC=$CC LD=$LD AR=$AR

关于android - 为 android 构建 valgrind 时未定义 __ANDROID__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18988422/

相关文章:

Android 使用 Dagger 2 为动态更改 url 实现 HostSelectionInterceptor

java - setContentView 上的 InflateException(R.layout.activity_login);

c# - Linux 中单声道的 Asp.net : ScriptManager. 找不到 ScriptResourceMapping

php - 如何将多个 PHP 参数传递给 bash

valgrind - 将 --memcheck 限制为您自己的代码

Android:HttpGet 中的 IllegalStateException

android - 更新回收器 View 来自不同 Activity 的项目

linux - Chef/Bash 配方中的 String.Format 等价物

c - Mac OS X 上由 pclose() 引起的 Valgrind 错误

C - valgrind - 大小为 1 的无效读取