zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Java并发与线程同步
    ArrayList源码分析
    Lock之ReentrantLock及实现生产者消费者和死锁
    SimpleDateFormat线程不安全原因及解决方案
    JDK1.7 hashMap源码分析
    java 数据操作
    java 数据流操作
    java 基础概念
    获取class 信息 java
    Java虚拟机系列(三)---内存溢出情况及解决方法
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/9843816.html
Copyright © 2011-2022 走看看