android 移植libcurl

关于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 准备工作

1)android 源码并且已编译通过

2)下载libcurl源码,解压到android目录external下 ,根据android的命名习惯第三方库文件夹是不保留版本号的,所以我们把刚刚curl.x.x 改成curl

2 配置curl config 在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)

你可能感兴趣的:(android,服务器,Module,Build,Path,library)