http://blog.csdn.net/cnhua57inyu/article/details/41693661
前面的讲解已经很详细,完全可以在linux下成功编译出curl的静态库供JNI调用,但本着详细的原则也为了以后再次用到时方便查阅,对此做个总结。
1.准备条件:
操作系统:Linux(本机Ubuntu14.04)
编译支持:android-ndk-r10e
curl源文件:curl-7.46.0
openssl源文件:openssl-android
2.编译准备:(shell)
a.设置环境变量
export CC=arm-linux-androideabi-gcc
export LDFLAGS="-L$ANDROID_NDK_HOME/platforms/android-21/arch-arm/usr/lib"
export CPPFLAGS="-I$ANDROID_NDK_HOME/platforms/android-21/arch-arm/usr/include"
其中:
ANDROID_NDK_HOME为NDK的绝对路径;
CC为编译静态库提供了编译器,ubuntu下默认编译器为GCC;
LDFLAGS是告诉编译器从哪里寻找需要的库文件;
CPPFLAGS可选的编译器选项,在编译 C/C++ 代码文件的时候使用。这可能是有用的,指定一个附加的包含路径(相对于NDK的顶层目录),宏定义,或者编译选项
b.生成android编译器:
$ANDROID_NDK_HOME/build/tools/make-standalone-toolchain.sh --platform=android-21
原则上,此处的platform与上面的保持一致,若出现
Unable to auto-config arch from toolchain
则这是说无法自动配置 toolchain,需要手动配置.先看看你的ndk支持编译哪些cpu(通过打开toolchains文件夹查看),然后编辑 make-standalone-toolchain.sh,找到并修改 TOOLCHAIN_NAME变量
此处修改为
TOOLCHAIN_NAME=arm-linux-androideabi-4.9
重新执行上述命令
根据打印的信息,将生成的arm-linux-androideabi-4.9.tar.bz2解压到任意位置
export PATH=$PATH:/yourDir/arm-linux-androideabi-