我正在尝试使用独立的 NDK 工具链(gcc 4.8)交叉编译适用于 Android 的 CppCheck:
#NDK_ROOT="/softdev/android-ndk-r9"
ARCH="arm-linux-androideabi"
export PATH="/softdev/arm-toolchain-gcc4.8/bin/:$PATH"
export SYS_ROOT="/softdev/arm-toolchain-gcc4.8/sysroot"
export CC="${ARCH}-gcc --sysroot=$SYS_ROOT"
export CXX="${ARCH}-g++ --sysroot=$SYS_ROOT"
export LD="${ARCH}-ld"
export AR="${ARCH}-ar"
export RANLIB="${ARCH}-ranlib"
export STRIP="${ARCH}-strip"
export CPPFLAGS="-I${SYS_ROOT}/usr/include \
-I${SYS_ROOT}/include \
-I/Users/asmirnov/Documents/dev/src/TokyoCabinet/ \
-I/softdev/android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/include"
export LDFLAGS="$LDFLAGS \
-L${SYS_ROOT}/usr/lib \
-L${SYS_ROOT}/lib \
-L/softdev/android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi"
make
它似乎可以编译文件,但无法链接到可执行文件(下面跳过了大多数错误):
...
lib/tokenize.cpp:8731: error: undefined reference to 'std::string::replace(unsigned int, unsigned int, char const*)'
lib/mathlib.h:40: error: undefined reference to 'std::ostream::operator<<(unsigned long)'
/softdev/android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.8/include/bits/stl_vector.h:794: error: undefined reference to 'std::__throw_out_of_range(char const*)'
collect2: error: ld returned 1 exit status
make: *** [cppcheck] Error 1
我应该怎么办?