拒绝ndk-build (Android Native Development Kit)

Eclipse或者Android Studio里都不能调试C, 实际还得在gdb命令行里做,那这些代码放在Eclipse里毫无用处。虽然据说新的Android Studio里集成了C/C++开发,但是到什么程度还不知道。

废话少说, 

直接用NDK里的gcc是这样的:  (假设ANDROID_NDK_ROOT已经被设定好了)

就是几个环境变量的事儿。其中第一行的android-8可以自己看着办换成android-22之类的都行,就是sdk版本号.
其中的STL_ROOT那两行是为了C++的stl库的,用得着时就去掉注释。

SYS_ROOT=`ls -d $ANDROID_NDK_ROOT/platforms/android-8/arch-arm` || exit 1
TOOL_CHAIN_DIR=`ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].*/prebuilt/* | tail -n 1` || exit 1
CC="$TOOL_CHAIN_DIR/bin/arm-linux-androideabi-g++ --sysroot=$SYS_ROOT"

#STL_ROOT=`ls -d $ANDROID_NDK_ROOT/sources/cxx-stl/gnu-libstdc++/[4-5].* | tail -n 1` || exit 1
#CC="$CC -I$STL_ROOT/include -I $STL_ROOT/libs/armeabi/include"

CC="$CC -fno-rtti -fno-exceptions"
然后你就可以通过$CC来编译了,例如

$CC a.c



小菜都可以这样干,只是一些庞大的auto config之类的时候,就有点问题,于是用正规的toolchain.

echo ---------------make standard GCC Tool Chain from Android NDK--------------------
ls -d ./std_toolchain && { echo ./std_toolchain already exist; exit 0; }

PLATFORM=$(basename $(ls -d $ANDROID_NDK_ROOT/platforms/android-8)); test -z $PLATFORM && exit 1
TOOLCHAIN=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].* | tail -n 1)); test -z $TOOLCHAIN && exit 1
WORK_SYSTEM=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].*/prebuilt/* | tail -n 1)); test -z $WORK_SYSTEM && exit 1
$ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --install-dir=./std_toolchain --platform=$PLATFORM --toolchain=$TOOLCHAIN --system=$WORK_SYSTEM --arch=arm --verbose
export PATH="$PWD/std_toolchain/bin:$PATH"
export CC=arm-linux-androideabi-gcc
然后,该干嘛干嘛, 例如:  (注意黑体的arm-linux-androideabi-,这个才是接口之处。)
./configure --enable-cross-compile --cross-prefix=arm-linux-androideabi- --target-os=linux     --arch=arm --cpu=armv5te     --disable-doc --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --disable-debug --disable-everything     --enable-static    --enable-protocol=pipe    --enable-filter=scale --enable-filter=crop --enable-filter=transpose    --enable-demuxer=rawvideo --enable-decoder=rawvideo    --enable-muxer=image2 --enable-muxer=image2pipe --enable-muxer=mjpeg --enable-encoder=mjpeg --enable-encoder=png    --enable-x11grab --enable-indev=x11grab    || exit 1



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。