sheldon_blogs

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上保密通讯的工业标准。

  (1)官网源码下载地址:https://www.openssl.org/source/

       由于需要移植到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。

 

posted on 2018-10-24 15:39  sheldon_blogs  阅读(1122)  评论(0编辑  收藏  举报

导航