curl交叉编译方法

arm平台curl交叉编译方法。 基于curl + openssl + zlib 的方式组建arm上的https客户端,其中curl作为http客户端,openssl提供https支持,zlib负责处理gzip压缩的http报文。

编译目录结构如下:

其中curl-7.29.0、openssl-OpenSSL_1_0_2g和zlib-1.2.8是待编译的源码。libs用来存放编译出来的库以及头文件。

编译所需源码附件中列出,也可自行下载(最好从官网下)。

下面的例子中https_framework的全路径是/home/test/https_framework。

一、编译zlib:(版本zlib-1.2.8)

  1. 执行下面的命令生成makefile: ./configure --prefix=/home/test/https_framework/libs/zlib
  2. 由于zlib在生成makefile的时候不支持修改编译器选项,只好在makefile中修改: AR=ar RANLIB=ranlib 改成: AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib 然后全文搜索一下gcc, 全部替换成arm-linux-gnueabihf-gcc
  3. 执行make 命令编译
  4. 执行make install命令安装
  5. 生成的头文件、库都在/home/test/https_framework/libs/zlib目录下

二、编译openssl:(版本openssl-OpenSSL_1_0_2g)

  1. 执行下面的命令生成makefile: ./Configure linux-elf-arm linux:'arm-linux-gnueabihf-gcc' --prefix=/home/test/https_framework/libs/openssl x86用下面的命令 ./Configure linux-x86_64 --prefix=/home/test/https_framework/libs/openssl 如果提示编译前先make depend,可忽略。
  2. 在makefile中做如下修改: RANLIB= /usr/bin/ranlib --> RANLIB= arm-linux-gnueabihf-ranlib NM= nm --> NM= arm-linux-gnueabihf-nm
  3. 执行make 命令编译
  4. 执行make install命令安装
  5. 生成的头文件、库都在/home/test/https_framework/libs/openssl 目录下

三、编译curl:(版本curl-7.29.0)

  1. 执行下面的命令生成makefile: ./configure --with-ssl=/home/test/https_framework/libs/openssl --with-zlib=/home/test/https_framework/libs/zlib --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf --prefix=/home/test/https_framework/libs/curl/ --enable-shared=0 其中 –enable-shared=0 说明只编译静态库 –with-ssl= 指定openssl的安装路径 –with-zlib= 指定zlib的安装路径
  2. configure执行完毕后输出配置信息,注意查看openssl和zlib是否使能: curl version: 7.29.0 SSL support: enabled (OpenSSL) SSH support: no (–with-libssh2) zlib support: enabled
  3. 执行make 命令编译
  4. 执行make install命令安装
  5. 生成的头文件、库都在/home/test/https_framework/libs/curl/ 目录下
  6. 编译x86平台下的库会默认开启openssl和zlib选项,可以通过--without-ssl和--without-zlib 分别禁止掉

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏博客园迁移

分布式事务—两阶段提交协议

两阶段提交协议(Two-phase Commit,2PC)经常被用来实现分布式事务。一般分为协调器C和若干事务执行者Si两种角色,这里的事务执行者就是具体的数据...

962
来自专栏软件测试经验与教训

WebScarab使用说明

3394
来自专栏软件测试经验与教训

ADB获取APP崩溃日志

在测试Android APP的过程中遇到crash时,我们都需要把崩溃日志导出来作为附件传到bug管理工具中,今天分享一下我用的方式。

1252
来自专栏阮一峰的网络日志

Content Security Policy 入门教程

跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。 ? 为了防止它们,要采取很多编程措施,非常麻烦。很多人提出,能不能根本上解决问题,浏览器自动禁止外部注...

3245
来自专栏FreeBuf

爬虫代理搭建与批量安装

代理对于搞爬虫的都不会陌生。公司有一批阿里云服务器用于分布式增量抓取,但对于一些封ip且只需进行一次全量抓取的数据源,或数据量级较小时,如果部署到爬虫集群上又太...

5055
来自专栏Flutter&Dart

DartVM服务器开发(第十八天)--项目部署到云服务器

先购买一台云服务器,我选择的是Ubuntu / 16.04 LTS amd64 (64bit)操作系统

2413
来自专栏Java技术分享

关于RBAC(Role-Base Access Control)的理解

有两种正在实践中使用的RBAC访问控制方式:隐式(模糊)的方式和显示(明确)的方式。

2358
来自专栏ytkah

thinkcmf安装教程与目录结构详解 快速上手版

  最近接了一个建站项目,要求用thinkcmf来搭建,ytkah在想php都大致一样吧,快速地下载安装包,可是!怎么安装呢?没看到安装指引文件或目录,查看了安...

4904
来自专栏微服务

微服务实践分享与探讨

服务调用关系 ? API网关优缺点 简化沟通方式 API网关对所有微服务提供单一的访问点 安全性 对客户端隐藏了服务发现和服务版本 阻止大规模攻击,包括S...

3457
来自专栏Grace development

NGINX日志配置总结

本来准备讲解nginx和apache的日志的,但是个人不太推荐apache(纯属个人爱好),这里就不介绍apache的日志了。

2112

扫码关注云+社区

领取腾讯云代金券