专栏首页coderhuocurl交叉编译方法

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 条评论
登录 后参与评论

相关文章

  • Ubuntu上搭建arm虚拟运行环境

    没有开发板,如何调试运行arm程序? 本文主要讲解如何在Ubuntu上搭建arm交叉编译、运行环境。

    coderhuo
  • 虚拟内存探究 -- 第五篇:The Stack, registers and assembly code

    这是虚拟内存系列文章的第五篇,也是最后一篇,目标是以不同的方式在实践中学习一些计算机基础知识。

    coderhuo
  • TCP连接建立、断开过程详解

    TCP连接建立过程需要经过三次握,断开过程需要经过四次挥手,为什么? 有没有其他的连接建立、断开方式?

    coderhuo
  • 中国首位IoT领域的GDE:Android Things全解析及展望

    IT大咖说
  • web前端几个小知识点笔记

    1、css实现宽度是百分比的盒子为正方形 <div style="width:50%;padding-bottom:50%;height:0px;backgro...

    用户1174387
  • 麻省理工学院郑立中教授到访腾讯

    1月3日,来自麻省理工学院(Massachusetts Institute of Technology ,MIT)郑立中教授到访腾讯,并作题为“A Geomet...

    腾讯高校合作
  • Matpotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法

    最近有小伙伴私信我关于matplotlib时间类型刻度的设置问题,第一感觉就是官网有好多例子介绍啊

    数据森麟
  • 雷军 1994 年写的代码,像诗一样优雅!不服不行!

    雷军曾自夸自己写的代码像诗一样优雅,网友感觉这雷军写的94年代码如何?2019年世界500强企业排行榜,仅成立9年的小米全球排名第468位,这让小米的创始人雷军...

    路人甲Java
  • RHEL7及CentOS7的语言、字符编码、键盘映射、X11布局设置(localectl)-系统管理(1)

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • 已解决:umount取消挂载时提示/home: device is busy怎么办?

    已解决:umount取消挂载时提示/home: device is busy怎么办?

    拓荒者

扫码关注云+社区

领取腾讯云代金券