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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值