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)

要在Ubuntu上移植libcurl,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了必要的开发工具和库文件。可以使用以下命令来安装所需的软件包: sudo apt-get install build-essential libssl-dev 2. 下载libcurl的源代码。你可以从libcurl官方网站下载最新版本的源代码。 [1] 3. 解压下载的源代码文件。进入解压后的目录。 4. 打开终端并执行以下命令来配置编译选项和安装路径: ./configure --prefix=/usr/local 5. 运行make命令来编译libcurl: make 6. 运行下面的命令以安装libcurl到指定的路径: sudo make install 7. 现在,libcurl已经成功移植到Ubuntu上了。你可以在你的代码中使用libcurl库了。 请注意,以上步骤仅适用于在Ubuntu上移植libcurl。如果你要在其他操作系统上进行移植,请参考相应的操作系统文档以获取更详细的指导。 引用内容: //curl_easy_setopt(curl, CURLOPT_WRITEDATA, recv); 移植libcurl到sylixos系统,配置sharelib的时候,需要在专家模式下修改libcurl.mk,这个文件中定义的LOCAL_CFLAGS和LOCAL_DSYMBOL,在移植的时候花费了很多时间,所以比较有参考意义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ubuntu移植libcurlAndroid平台](https://blog.csdn.net/weixin_32620265/article/details/117858880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Sylixos移植libcurl所用配置文件](https://download.csdn.net/download/baidu_19348579/16679093)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值