Android : 移植curl-7.61.1 及 openssl-1.1.0i
一、curl-7.61.1 Android平台移植:
libcurl是一个免费且易于使用的客户端URL传输库,支持DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAP、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、Telnet和TFTP。libcurl支持SSL证书、HTTP POST、HTTP PUT、FTP上传、基于HTTP表单的上传、代理、cookie、用户+密码验证(Basic、Digest、NTLM、negotiating、Kerberos)、文件传输简历、HTTP代理隧道等等!
libcurl是高度可移植的,支持许多平台,包括Solaris、NetBSD、FreeBSD、OpenBSD、Darwin、HPUX、IRIX、AIX、Tru64、Linux、UnixWare、HURD、Windows、Amiga、OS/2、BeOs、Mac OS X、Ultrix、QNX、OpenVMS、RISC OS、Novell NetWare、DOS等…
libcurl是免费的、线程安全的、与IPv6兼容的、功能丰富的、支持良好的、快速的、完整的文档化的,已经被许多知名的、大型的和成功的公司所使用。
(1)最新的版本可到curl官网下载:https://curl.haxx.se/download.html
(2)编译:(注:从执行配置指令后的输出信息可以看到默认不支持SSL,需要增加-with-ssl=选项,指定的路径是openssl源码交叉编译后的install目录)
---》CC=arm-linux-androideabi-gcc ./configure --host=arm-linux prefix=$PWD/tmp --enable-shared=no --enable-static=yes --disable-ldap --disable-ldaps -with-ssl=/home/sheldon/workSpace/openssl-1.1.0i/tmp CFLAGS="-pie -fPIE" LDFLAGS="-pie -fPIE"
---》make && make install
(3)使用:将tmp目录下生成的头文件及库添加到Android工程:
方法一:
##########################################
#预编译到SDK系统库目录
include $(CLEAR_VARS)
LOCAL_MODULE := libcurl
LOCAL_SRC_FILES := libcurl.a
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_OWNER := sheldon
LOCAL_MODULE_SUFFIX := .a
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
include $(BUILD_PREBUILT)
##########################################
#另外在对应的Android.mk添加静态库依赖即可
LOCAL_WHOLE_STATIC_LIBRARIES += libjbvad libcurl
方法二:
LOCAL_LDFLAGS+=/xxx/libcurl.a
二、 openssl-1.1.0i Android平台移植:
OpenSSL即Secure Sockets Layer(安全套接层协议)是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。
由于需要移植到Android平台,要使用xx交叉编译器,但不支持链接pthread库,需要修改Makefile去掉-pthread的选项,而新版的源码必需要使用到,所以最后使用的是1.1.0i的版本:

(2)编译:
---》 CC=arm-linux-androideabi-gcc ./Configure no-asm --prefix=$PWD/tmp linux-armv4
---》 make && make install
(3) 库的调用方法同上。注:libcurl 要同时依赖 libcrypto 和 libssl。
Android : 移植curl-7.61.1 及 openssl-1.1.0i的更多相关文章
- 初学者的Android移植:在Debian上建立一个稳定的构建环境
介绍 通过在chrooted环境中设置开发环境,避免依赖冲突和沙箱您的Android开发从您的Debian GNU/Linux系统.这是为通配符类别准备的,因为从源代码构建Android似乎没有在其他 ...
- Ogre 1.9 Android移植
Ogre 1.9 Android移植 分类: 图形渲染2013-02-04 16:47 3860人阅读 评论(14) 收藏 举报 Android Ogre C++linuxLinuxLINUX 上一篇 ...
- android移植pppoe拨号上网的全过程
硬件环境:Tiny6410开发板 软件环境:fedora14 + Android 2.3.4 + linux-2.6.36 所需资源:rp-pppoe-3.11.tar.gz http://www.r ...
- 第四章Android移植环境搭建
第四章Android移植环境搭建 这一章主要学习如何搭建 Android 移植的环境.因为 Android 底层是基于 Linux 内核的,所以本章从交叉编译环境等嵌入式开发环境的搭建开始,介绍了 B ...
- 第三章Android移植平台工具介绍
第三章Android移植平台工具介绍 进行 Android 移植的学习并不一定需要一款 Android 手机,但必须要有一款主流的开发板,开发板是用来进行嵌入式系统开发的电路板,包括中央处理器.存储器 ...
- cocos2d-x 从win32到android移植的全套解决方案
引言:我们使用cocos2d-x引擎制作了一款飞行射击游戏,其中创新性地融入了手势识别功能.但是我们在移植过程中遇到了很多的问题,同时也发现网上的资料少而不全.所以在项目行将结束的时候,我们特地写了这 ...
- 在Windows上编译最新的CURL,含有zlib,openssl
最近,从网上下载了一个curl库,使用时各种报错,都无法启动,于是干脆就直接自己编译了. 1. 准备工作 a. 下载zlib zlib可以使得HTTP请求支持gzip压缩,其地址如下: 官网:http ...
- vlc android 移植版编译
同步发表于http://avenwu.net/2015/07/27/vlc-android-compiling 安装必备工具/解决环境问题 环境准备什么的如果没配置过需要一步步配置,主要是sdk/nd ...
- centos curl版本nss改成openssl
在centos 6.2的系统里面的curl支持的https是nss版本的,而不是openssl的,所以在php使用curl访问https的时候会报Unable to load client key - ...
随机推荐
- English trip EM2-PE-6B Teacher:Taylor
课上内容(Lesson) 词汇(Key Word ) engage [ɪn'ɡedʒ] 订婚 miracle ['mɪrəkl] n. 奇迹,奇迹般的人或物:惊人的事例 personality 性 ...
- python3-知识扩展扫盲易忘-generator的用法
前部分转自: https://www.cnblogs.com/Tsukasa/p/6613934.html 通过列表list生成器,我们可以直接创建一个列表 ? 1 2 3 >>> ...
- 02linux 基本命令
系统环境变量的设置 以nginx为例: 方式一: ~/.bash_profile 这是个人的 /etc/profile 为系统的环境变量 vim /etc/profile.d/nginx.sh #在 ...
- 『TensorFlow』SSD源码学习_其五:TFR数据读取&数据预处理
Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dat ...
- react-native run-ios时报错xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
命令行运行react-native 项目时,报错:xcrun: error: unable to find utility "instruments", not a develop ...
- bool类型为什么可以当做int
实际上bool型变量占用了一个字节的内存,当值为false的时候,实际存储的是0x00,为true时实际存储的是0x01,因此可以作为int整型使用 bool型只分0与非0,0为false,其余的包括 ...
- Oracle Shared Pool机制之——Latches, Locks, Pins and Mutexes
本文中,我们将讨论共享池(Shared Pool)中的各种内存保护结构,即Latches,Locks,Pins和Mutexes. 1. Lathes 当在库缓冲(Libraray Cache)中创建 ...
- Linux 环境下 网络IO模型
本文讨论的背景是Linux环境下的network IO. IO发生时涉及的对象和步骤: 对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的proce ...
- LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测异常参数
结合CNN的可以参考:http://fcst.ceaj.org/CN/article/downloadArticleFile.do?attachType=PDF&id=1497 除了行为,其他 ...
- nginx支持HTTP2的配置过程
一.获取安装包 http://zlib.net/zlib-1.2.11.tar.gz https://www.openssl.org/source/openssl-1.0.2e.tar.gz (ope ...