关于libcurl
libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。
1 准备工作
2 配置curl config 在curl1)android 源码并且已编译通过
2)下载libcurl源码,解压到android目录external下 ,根据android的命名习惯第三方库文件夹是不保留版本号的,所以我们把刚刚curl.x.x 改成curl
cd android/external/curl 执行下面代码(android 的目录路径需要根据自己的目录位置修改 ,部分包含硬件相关的源码路径接口也肯能需要修改)
A=/root/Paulo/android_8801 && PATH="$A/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin:$PATH" ./configure --host=arm-linux CC=arm-eabi-gcc CPPFLAGS="-I $A/system/core/include -I $A/hardware/libhardware/include -I $A/hardware/libhardware_legacy/include -I $A/hardware/ril/include -I $A/dalvik/libnativehelper/include -I $A/frameworks/base/include -I $A/frameworks/base/opengl/include -I $A/external/skia/include -I $A/out/target/product/generic/obj/include -I $A/bionic/libc/arch-arm/include -I $A/bionic/libc/include -I $A/bionic/libstdc++/include -I $A/bionic/libc/kernel/common -I $A/bionic/libc/kernel/arch-arm -I $A/bionic/libm/include -I $A/bionic/libm/include/arch/arm -I $A/bionic/libthread_db/include -I $A/external/curl/include/ -I $A/external/curl -I $A/out/target/product/tcc8800st/obj/lib -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5TE__ -I $A/system/core/include/arch/linux-arm/ -include $A/system/core/include/arch/linux-arm/AndroidConfig.h -DANDROID -DHAVE_CONFIG_H -DSK_RELEASE -DNDEBUG" CFLAGS="-nostdlib -Bdynamic -Wl,-T,$A/build/core/armelf.x -Wl,-dynamic-linker,$A/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc -L$A/out/target/product/tcc8800st/obj/lib -Wl,-rpath-link=$A/out/target/product/tcc8800st/obj/lib -lc -lstdc++ -lm $A/out/target/product/tcc8800st/obj/lib/crtbegin_dynamic.o -Wl,--no-undefined $A/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a $A/out/target/product/tcc8800st/obj/lib/crtend_android.o" LIB="-L $A/out/target/product/tcc8800st/obj/lib /out/target/product/tcc8800st/obj/lib/crtbegin_dynamic.o -lc -Wl $A/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a $A/development/ndk/build/platforms/android-4/arm-arm/usr/lib/crtbegin_dynamic.o $A/development/ndk/build/platforms/android-4/arch-arm/usr/lib/crtend_android.o "
其中红色部分需要更加自己目录结构作相应修改,中间出错可以看看config.log什么地方出错
3)编译
在android 目录下执行make curl 或是 直接在curl中mm
生成编译动态库需要修改Android.mk
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE:= libcurl
LOCAL_MODULE_TAGS := optional
# Copy the licence to a place where Android will find it.
# Actually, this doesn't quite work because the build system searches
# for NOTICE files before it gets to this point, so it will only be seen
# on subsequent builds.
ALL_PREBUILT += $(LOCAL_PATH)/NOTICE
$(LOCAL_PATH)/NOTICE: $(LOCAL_PATH)/COPYING | $(ACP)
$(copy-file-to-target)
#include $(BUILD_STATIC_LIBRARY)
include $(BUILD_SHARED_LIBRARY)