前言

libcurl 是一个功能全面的客户端 URL 传输库,支持常见的各种传输协议(官方介绍),并且具有高可移植性,命令行工具 curl 就是使用的这个库。在嵌入式开发板上,有 http/https 等使用需求时,可以考虑使用 libcurl。使用 libcurl 所需的库文件和头文件可以通过编译curl源码得到。

curl 源码下载地址:https://curl.se/download.html。
我使用的是:curl-7.79.1.tar.gz

编译流程

./configure ...
make
make install

官方提供了一个编译和安装的文档,可以参考:how to install curl and libcurl。

curl 源码的 configure 工具有很多可选配置项。可以通过 ./configure --help 查看。我在配置时参考了这篇博客:libcurl源码编译及使用。

简单编译(不支持 HTTPS)

如果只需要http,不需要支持https,可以使用如下配置:

./configure CC=arm-none-linux-gnueabi-gcc \
--prefix=/home/sy/curl-7.79.1/out \
--disable-static \
--enable-shared \
--without-libidn \
--without-ssl \
--without-librtmp \
--without-gnutls \
--without-nss \
--without-libssh2 \
--without-zlib \
--without-winidn \
--disable-rtsp \
--disable-ldap \
--disable-ldaps \
--disable-ipv6 \
--host=arm-linux
  • CC 指定交叉编译使用的 gcc ;
  • prefix用于指定 make install 的安装目录;
  • 使用 --disable-static --enable-shared--disable-shared --enable-static 指定输出动态库(.so)或静态库(.a);

支持 HTTPS 编译

要支持 https,重点就是 ./configure 要添加 --with-ssl 选项,但这个选项依赖 openssl 库,所以还需要先交叉编译 openssl 库。

1、编译 openssl

openssl 库源码下载地址:https://www.openssl.org/source/。
我这里使用的是:openssl-1.1.1l.tar.gz
交叉编译配置:

./Configure shared no-asm \
--prefix=/home/sy/openssl-1.1.1l/out \
--cross-compile-prefix=arm-none-linux-gnueabi- \
linux-armv4

编译:

make && make install

编译完成后,输出目录如下:

2、编译 curl

这里参考了上面提到的官方文档里的步骤,配置如下:

# step 1
export PKG_CONFIG_PATH=/home/sy/openssl-1.1.1l/out/lib/pkgconfig
# step 2
./configure CC=arm-none-linux-gnueabi-gcc \
--prefix=/home/sy/curl-7.79.1/out \
--disable-static \
--enable-shared \
--without-libidn \
--with-ssl \
--without-librtmp \
--without-gnutls \
--without-nss \
--without-libssh2 \
--without-zlib \
--without-winidn \
--disable-rtsp \
--disable-ldap \
--disable-ldaps \
--disable-ipv6 \
--host=arm-linux

编译:

make && make install

编译安装的目录结构如下:

  • bin 目录下是可执行的 curl 命令行工具;
  • include 目录是使用 libcurl 库需要的头文件;
  • lib 目录下就是 libcurl 库的静态库(.a)或动态库(.so);
  • share 目录是 man 手册文档。

移植和验证

因为我这里配置的动态链接,所以需要将 openssl 和 curl 编译输出的 lib 目录下的内容都拷贝到开发板上,比如开发板的 /opt 目录下,然后在库加载路径环境变量中添加 openssl 和 libcurl 库的路径。为了方便测试,我把 bin 目录也拷贝了,相当于移植了 openssl 和 curl 两个命令行工具。

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/opt/curl/lib:/opt/openssl/lib
export PATH=$PATH:/opt/curl/bin:/opt/openssl/bin

可以通过 curl -V 命令来查看 curl 的信息:

[root@sy-iMX6UL]# curl -V
curl 7.79.1 (arm-unknown-linux-gnu) libcurl/7.79.1 OpenSSL/1.1.1l
Release-Date: 2021-09-22
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HSTS HTTPS-proxy Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets

通过以上输出可以看到 curl 使用了 OpenSSL/1.1.1l 并支持 https 协议。

附 libcurl API 文档

The libcurl API
Easy interface overview
multi interface overview

iMX6UL开发板移植libcurl库相关推荐

  1. arm开发板移植ALSA库与ALSA工具

    目录 首先我们需要下载两个所要用到的库文件(基于Ubuntu) 一:先配置ALSA库文件 1.先解压放到家目录下ALSA的源文件: 2.解压后进去解压得到的文件夹执行以下命令: 3.配置好以后执行 二 ...

  2. [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植

    文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...

  3. arm开发板移植 curl

    arm开发板移植 curl 一,下载curl源码 二,配置curl 三,移植到arm平台上 三,arm平台curl测试 一,下载curl源码 地址:https://curl.haxx.se/downl ...

  4. 迅为linux下串口,迅为iMX6UL开发板多路串口开发板接口详解

    迅为iMX6UL开发板 一.底板硬件描述: 1.POWER电源接口 电源输入为5V/2A+,给核心板提供5V电源,给底板供电. 原理图部分如下图所示. 电源接口位置如下图所示. 2.SWITCH电源开 ...

  5. QEMU imx6ul开发板环境搭建

    QEMU imx6ul开发板环境搭建 文章目录 QEMU imx6ul开发板环境搭建 0. 前言 1. 基本环境 2. 安装KVM 3. 下载开发板的QEMU镜像文件 4. 运行QEMU系统 4.1 ...

  6. ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏

    ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏 材料 硬件连接 引脚连接表 引脚连接图 安装TFT_eS ...

  7. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  8. 迅为-IMX6UL开发板丨双网口丨双CAN总线丨4路USB HOST丨2路串口、6路插座引出,共8路串口丨1路RGB信号丨2路LVDS信号

    迅为iMX6UL开发板多路串口开发平台 迅为i.MX 6UL开发板基于ARM Cortex-A7内核,主频高达528 MHz,内存:512MDDR3 存储:8G EMMC,支持2路CAN,2路百兆以太 ...

  9. 迅为iMX6UL开发板驱动-PWM测试方法

    平台:迅为iMX6UL开发板  说明:PWM 配置和测试方法 测试中不需要添加额外驱动,是基于系统用户态的 sysfs,可以使用命令来直接操作底层. 1 iMX6UL的PWM简介 打开 iMX6UL ...

最新文章

  1. python软件开发-有哪些值得推荐的 Python 开发工具?
  2. MYSQL-Can't connect to MySQL server on 'localhost' (10061)
  3. 科目三-变更车道,直线行驶和超车的考试标准
  4. Unity 提取游戏资源之ktx转换
  5. 3.3.4.6. NULL值操作
  6. FD.io VPP基本介绍-理解VPP软件架构
  7. JavaScript学习总结(1)——JavaScript基础
  8. 我知道真相,但我仍然勇往直前
  9. Springmvc与jasperreport结合生成报表的一种方法
  10. Android:ViewPager
  11. matlab2014演示在哪,matlab2014安装时crack文件在哪里,从哪个文件下面
  12. 斑马zebra GX420d打印机的Labview程序
  13. 盘点微软CEO纳德拉十大有趣事实
  14. selenium中整个页面的截图及局部截图(方法分析)
  15. 深信服技术支持工程师(安全、云计算方向)面试题目
  16. Zookeeper集群启动异常: Cannot open channel to x at election address xx/xxx.xxx.xxx.xxx:3888
  17. Mysql数据库分表实现
  18. 枕头的高度影响颈椎健康
  19. hjr-MUD游戏(二):HTML5-APP客户端编写
  20. 商米科技IPO被终止:曾拟募资10亿 蚂蚁集团与小米是股东

热门文章

  1. 《铸梦之路》帧同步卡牌放置手游(斗罗大陆武魂觉醒、上古王冠)
  2. 【测试】功能测试用例设计方法总结
  3. 64位win7下安装keras的过程
  4. 【金猿案例展】上海市儿童基金会——管理会计云平台建设
  5. 医疗项目业务以及表设计介绍
  6. YOLOv5源码逐行超详细注释与解读(3)——训练部分train.py
  7. JAVA-初步认识-第五章-数组-常见操作-进制转换(查表法)
  8. 配置thinkphp路由,隐藏index.php
  9. windows系统镜像修复计算机,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
  10. 股票买卖接口如何实现委托下单的功能?