拒绝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然后,该干嘛干嘛, 例如: (注意黑体的arm-linux-androideabi-,这个才是接口之处。)export PATH="$PWD/std_toolchain/bin:$PATH" export CC=arm-linux-androideabi-gcc
./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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。