iMX6UL开发板移植libcurl库
前言
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库相关推荐
- arm开发板移植ALSA库与ALSA工具
目录 首先我们需要下载两个所要用到的库文件(基于Ubuntu) 一:先配置ALSA库文件 1.先解压放到家目录下ALSA的源文件: 2.解压后进去解压得到的文件夹执行以下命令: 3.配置好以后执行 二 ...
- [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植
文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...
- arm开发板移植 curl
arm开发板移植 curl 一,下载curl源码 二,配置curl 三,移植到arm平台上 三,arm平台curl测试 一,下载curl源码 地址:https://curl.haxx.se/downl ...
- 迅为linux下串口,迅为iMX6UL开发板多路串口开发板接口详解
迅为iMX6UL开发板 一.底板硬件描述: 1.POWER电源接口 电源输入为5V/2A+,给核心板提供5V电源,给底板供电. 原理图部分如下图所示. 电源接口位置如下图所示. 2.SWITCH电源开 ...
- QEMU imx6ul开发板环境搭建
QEMU imx6ul开发板环境搭建 文章目录 QEMU imx6ul开发板环境搭建 0. 前言 1. 基本环境 2. 安装KVM 3. 下载开发板的QEMU镜像文件 4. 运行QEMU系统 4.1 ...
- 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 ...
- 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 迅为-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路百兆以太 ...
- 迅为iMX6UL开发板驱动-PWM测试方法
平台:迅为iMX6UL开发板 说明:PWM 配置和测试方法 测试中不需要添加额外驱动,是基于系统用户态的 sysfs,可以使用命令来直接操作底层. 1 iMX6UL的PWM简介 打开 iMX6UL ...
最新文章
- python软件开发-有哪些值得推荐的 Python 开发工具?
- MYSQL-Can't connect to MySQL server on 'localhost' (10061)
- 科目三-变更车道,直线行驶和超车的考试标准
- Unity 提取游戏资源之ktx转换
- 3.3.4.6. NULL值操作
- FD.io VPP基本介绍-理解VPP软件架构
- JavaScript学习总结(1)——JavaScript基础
- 我知道真相,但我仍然勇往直前
- Springmvc与jasperreport结合生成报表的一种方法
- Android:ViewPager
- matlab2014演示在哪,matlab2014安装时crack文件在哪里,从哪个文件下面
- 斑马zebra GX420d打印机的Labview程序
- 盘点微软CEO纳德拉十大有趣事实
- selenium中整个页面的截图及局部截图(方法分析)
- 深信服技术支持工程师(安全、云计算方向)面试题目
- Zookeeper集群启动异常: Cannot open channel to x at election address xx/xxx.xxx.xxx.xxx:3888
- Mysql数据库分表实现
- 枕头的高度影响颈椎健康
- hjr-MUD游戏(二):HTML5-APP客户端编写
- 商米科技IPO被终止:曾拟募资10亿 蚂蚁集团与小米是股东
热门文章
- 《铸梦之路》帧同步卡牌放置手游(斗罗大陆武魂觉醒、上古王冠)
- 【测试】功能测试用例设计方法总结
- 64位win7下安装keras的过程
- 【金猿案例展】上海市儿童基金会——管理会计云平台建设
- 医疗项目业务以及表设计介绍
- YOLOv5源码逐行超详细注释与解读(3)——训练部分train.py
- JAVA-初步认识-第五章-数组-常见操作-进制转换(查表法)
- 配置thinkphp路由,隐藏index.php
- windows系统镜像修复计算机,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
- 股票买卖接口如何实现委托下单的功能?