android支持https通讯,交叉编译 libcurl libnghttp2 oponssl

最近公司在弄亚马逊echo项目,官网的demo是用java写的,但考虑到性能等一系列问题还是决定用C来实现,开发环境选择android,亚马逊服务器支持的是https通讯协议,
因此需要在android中将https一系列有关的C库交叉编译进去。

这里经过多番考察,我们最终选择libcurl库(why? 因为只有Libcurl我们这边和亚马秀通讯成功了,不用他还能用谁。。。。)libcurl 要想支持https 和 ssl 是依赖于nghttp2和openssl的,因此首先必须将后两个库编译出来,下面开始编译。

首先是环境搭建(ubuntu 14.04):
android NDK版本这里选择 r11b,下面是ndk的网盘链接
http://pan.baidu.com/s/1gfEDVpD
当然你也可以去官网下载最新的r13版本,不过估计会很慢,而且还需要翻墙
https://developer.android.google.cn/ndk/downloads/index.html
libcurl 官网下载:
git clone https://github.com/curl/curl.git
libnghttp2:
git clone https://github.com/nghttp2/nghttp2.git
openssl:
git clone https://github.com/openssl/openssl.git
所以说常逛github还是有好处的

android编译器环境搭建:
首先通过android NDK 生成工具链
这里写图片描述
接下来配置环境变量,我的bashrc 配置如下:
这里写图片描述

红色箭头LDFLAGS是告诉编译器从哪里寻找需要的库文件;
CPPFLAGS可选的编译器选项,

黄色箭头将工具链路径添加到环境变量中;
SYSROOT的含义可以参照这篇文章:
http://blog.csdn.net/shell_albert/article/details/45689801
总之一句话就是x86 平台默认是去根目录/usr/local/下面寻找头文件和库,加上sysroot之后编译的时候就回去ndk下面去寻找需要的头文件和库了。

蓝色箭头指定系统用到的c和 c++编译器

openssl库的编译:
环境搭建完成之后编译就很简单了,这里我写了个脚本
这里写图片描述

之后 make , make install_sw(安装的时候不带doc文件)
下面重点来了,将install目录中lib目录下的.so文件(libssl.so,libcryto.so)拷贝到
android-ndk-r11b/latforms\android-21\arch-arm\usr\lib 下,生成的头文件拷贝到
ndk目录usr\include\下面

nghttp2库的编译
在nghttp2目录下有两个android有关的配置文件, android-config,android-make
我们只要运行android-config,
在运行android-make就可以了
这里注意 android-config 文件中需要修改一下默认工具链(clang改成gcc)
这里写图片描述

之后将生成的库文件(libnghttp2.a)拷贝到ndk目录下

libcurl库的编译
当nghttp2 和 openssl两个库都编译完毕,并且bashrc中设置好了sysroot之后,Libcurl就好编译了,直接上脚本:
这里写图片描述

一句话搞定,这里面–with-nghttp2 和 –with-ss后面之所以没加参数是因为bashrc中配置的环境变量回使编译器编译的时候自动去ndk下面去寻找对应的头文件和库

将生成的libcurl.so拷贝到ndk目录下在弄个makefile就可以编写自己的代码了
至于makefile如何书写就不是本篇文章考虑的内容了。

好了,第一遍博客就到这里,以后一定要养成写博客的习惯,这样也方便自己记忆

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在 ARM 平台上进行 libcurl交叉编译,您可以按照以下步骤进行操作: 1. 安装交叉编译工具链:首先,您需要安装针对 ARM 平台的交叉编译工具链。这个工具链包含了针对 ARM 架构的编译器和相关工具。您可以从工具链供应商或者开发板厂商的官方网站上获取适用于您的平台的工具链,并按照其提供的说明进行安装。 2. 下载 libcurl 源代码:您可以从 libcurl 的官方网站上下载适用于 ARM 平台的 libcurl 源代码。 3. 配置 libcurl 编译选项:解压缩 libcurl 源代码后,进入源代码目录,并执行以下命令进行配置: ``` ./configure --host=<交叉编译工具链前缀> ``` `<交叉编译工具链前缀>` 是您安装的交叉编译工具链的前缀,例如 arm-linux-gnueabihf、aarch64-linux-gnu 等。 4. 编译 libcurl:配置完成后,执行 `make` 命令开始编译 libcurl。 5. 安装 libcurl:编译完成后,执行 `make install` 命令将 libcurl 安装到指定的目录中。 6. 在交叉编译环境中使用 libcurl:将交叉编译后的 libcurl 库文件和头文件复制到交叉编译环境中。然后,在您的项目中配置交叉编译工具链的路径和 libcurl 的路径,并链接 libcurl 库。 7. 进行交叉编译:使用交叉编译工具链对您的项目进行编译。确保在编译过程中正确链接 libcurl 库,并将生成的可执行文件拷贝到 ARM 平台上进行测试和部署。 请注意,具体的步骤可能会因您的目标平台和工具链而有所不同。建议参考相关文档和资源以获取更详细的信息。 希望对您有所帮助!如果您还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值