libcurl开源的、跨平台的网络传输库,用于在程序中实现数据传输功能的编译

文章目录

  • 前言
  • 1、libcurl关键特点和功能
  • 2、没有使用openssl以及libssh2编译libcurl的文件和使用openssl和libssh2编译
  • 3、libcurl网络库的下载
  • 4、libcurl网络库的编译
      • 4.1、直接使用cmake编译,不使用 OpenSSL 和 libssh2库编译的出来的libcurl库
      • 4.2、使用 OpenSSL 和 libssh2库编译的出来的libcurl库

前言

libcurllibcurl的全称是"Client URL",即客户端URL库。它是一个开源的、跨平台的网络传输库,用于在程序中实现数据传输功能。libcurl提供了一组易于使用的API,可以用来进行HTTP、HTTPS、FTP、FTPS、SCP、SFTP、LDAP、SMTP等协议的数据传输。

1、libcurl关键特点和功能

  • 多协议支持:libcurl支持多种网络协议,使其成为一个通用的网络传输解决方案。您可以使用libcurl来处理HTTP请求,下载文件,上传文件,发送电子邮件,连接FTP服务器等等。

  • 跨平台:libcurl可在各种操作系统上运行,包括WindowsmacOSLinux等,使得它成为开发跨平台应用程序的理想选择。

  • 轻量级:libcurl是一个轻量级的库,其代码库相对较小,因此可以在资源受限的环境中使用。

  • 易于集成:libcurlAPI设计简单易用,可以很容易地集成到C、C++、Python、Java等编程语言中。

  • 支持代理和Cookie:libcurl支持HTTP代理,可以在代理服务器上执行数据传输。它还支持Cookie管理,使得在跨多个请求保持会话状态更加方便。

  • SSL/TLS支持:libcurl可以使用OpenSSLlibressl等库来提供安全套接层(SSL)和传输层安全(TLS)支持,从而实现安全的HTTPS传输。

  • 支持FTP上传和下载:libcurl提供了强大的FTP功能,可以用于上传和下载文件到FTP服务器。

  • 断点续传:libcurl支持断点续传功能,允许您在传输中断后恢复传输,从上次中断的地方继续传输文件。

由于libcurl具有强大而灵活的功能,它被广泛应用于各种应用程序和项目中。无论是开发命令行工具,还是构建网站、客户端应用程序,libcurl都是一个可靠的选择,可以帮助您轻松实现各种网络传输需求。

2、没有使用openssl以及libssh2编译libcurl的文件和使用openssl和libssh2编译

区别在于编译 libcurl 时是否链接 OpenSSLlibssh2 库。让我们详细解释一下:

  • 编译 libcurl 时未使用 OpenSSL 和 libssh2:

    • 如果在编译 libcurl 时没有链接 OpenSSLlibssh2 库,那么生成的 libcurl 将不支持使用 HTTPSSFTP**(SSH File Transfer Protocol)**等安全传输协议。
    • 这意味着您无法使用 libcurl 库来进行通过 HTTPSSFTP 进行安全的数据传输。
  • 编译 libcurl 时使用了 OpenSSL 和/或 libssh2:

    • 如果在编译 libcurl 时链接了 OpenSSL 和/或 libssh2 库,那么生成的 libcurl 将支持 HTTPS 和/或 SFTP 等安全传输协议。
    • 这意味着您可以使用 libcurl 库来进行通过 HTTPSSFTP 进行安全的数据传输。

需要注意的是,HTTPS 使用 OpenSSL 库,而 SFTP 使用 libssh2 库。这两个库都提供了加密和安全传输所需的功能。

因此,如果您希望在 libcurl 中支持 HTTPSSFTP 等安全协议,您需要在编译时链接 OpenSSLlibssh2 或其他提供相应功能的库。否则,libcurl 将只能用于不涉及加密的传输协议(如 HTTPFTP 等)。

使用 libcurl 可以方便地在程序中进行网络通信,而通过链接 OpenSSLlibssh2,您可以确保通信是安全的并且可以加密传输敏感数据。

3、libcurl网络库的下载

github地址:libcurl下载。我下载的是:本人下载
在这里插入图片描述
下载完里面文件大概是这样子:
在这里插入图片描述

4、libcurl网络库的编译

4.1、直接使用cmake编译,不使用 OpenSSL 和 libssh2库编译的出来的libcurl库

  • 找到文件夹中camkeLists.txt文件所在处:
    在这里插入图片描述
  • 可以看到:
    在这里插入图片描述
  • 打开 .sln 解决方案文件生成解决方案文件即可:
    在这里插入图片描述
  • 可以看到生成了libcurl-d.liblibcurl-d.dll两个库文件:
    在这里插入图片描述
    在这里插入图片描述
    这里就是不使用 OpenSSLlibssh2库编译的出来的libcurl库,前面也已经说了这种库和使用 OpenSSLlibssh2库编译的出来的libcurl库的区别。

4.2、使用 OpenSSL 和 libssh2库编译的出来的libcurl库

  • 先打开目录curl-7.83.1\curl-7.83.1\projects下的generate.bat文件生成配置环境:然后我选择VC12,这里是visual studio 2013来编译的。以下几种代表什么意思我上篇文章都有注明。
    在这里插入图片描述

  • 打开cur-all.sln解决方案文件:
    在这里插入图片描述

  • 直接生成解决方案会报如下错误:
    在这里插入图片描述
    这是因为这样编译的话是要包含libssh2库文件才能编译通过。

  • libssh2官方地址:libssh2地址。我是下载的这个版本:下载链接。
    在这里插入图片描述

  • 下载好就会成这个样子:
    在这里插入图片描述

  • 也是用cmake编译,这里和上面编译libcurl一样,不多说,编译出来的库,把libssh2.lib以及include头文件拷贝到你要编译使用libcurl的目录:
    在这里插入图片描述

  • libcurl目录下新建一个libssh2文件存放库文件和头文件:
    在这里插入图片描述

  • 然后在解决方案中这样操作:
    在这里插入图片描述

  • 附加库目录:
    在这里插入图片描述

  • 输入库目录,然后重新生成解决方案:
    在这里插入图片描述

  • 再次报了如下错误,这个错误和上个错误是不是很熟悉,这是要包含openssl的库文件:
    在这里插入图片描述

  • openssl库下载地址:官方地址我下载的是这个地址:下载地址。这里的后缀有light和不加light是:注意,不要下载 light 版本,因为 light 版本不带库文件。
    在这里插入图片描述

  • 下载好里面文件有这些:
    在这里插入图片描述
    在这里插入图片描述

  • 同样把库文件和头文件拷贝到libcul中的文件中去:
    在这里插入图片描述

  • 同样在解决方案属性中增加头文件和库文件:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 再次重新生成解决方案出现了以下错误,是因为libcurl网络库还包含了libcryproto.lib密码学库和libcrld.lib
    在这里插入图片描述
  • 其中libcrypto.lib也是在openssl库文件里面的。直接拷贝过去即可。
    在这里插入图片描述
  • 再次生成解决方案出现如下错误,这是因为我这里使用的是libssh2.lib而不是libssh2d.lib,在属性里面删除掉即可:
    在这里插入图片描述
  • 再次生成解决方案完成编译:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/75323.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

peerDependency到底是什么

peerDependency到底是什么 正常开发中,我们经常接触到的是 package.json 中的 dependencies 和 devDependencies, 本文不对上面两个进行细节分析,让我们来看看 peerDependencies 是什么? 在 NPM v7 中,默认安装 peerDependencies…

虹科案例|如何分析设备故障时间和次数,打破生产瓶颈?

虹科设备绩效管理系统 保障生产设备的稳定性和可靠性 生产设备的稳定性和可靠性是保证企业正常生产的重要条件之一,设备故障的频发严重影响企业的正常生产,那么如何分析设备故障时间和次数,查找设备故障原因,协助企业打破生产瓶…

Arthas协助MQ消费性能优化

背景 项目中使用AWS的SQS消息队列进行异步处理,QA通过压测发现单机TPS在23左右,目标性能在500TPS,所以需要对消费逻辑进行优化,提升消费速度。 目标 消费TPS从23提升到500 优化流程 优化的思路是先分析定位性能瓶颈&#xff…

SpringBoot使用redis作为缓存的实例

目录 什么是缓存? 缓存的作用? 缓存的成本? 实际项目中的应用 代码展示 什么是缓存? 缓存就是数据交换的缓冲区(称作Cache [ kʃ ] ),是存贮数据的临时地方,一般读写性能较高。 缓…

[数据集][目标检测]遛狗不牵绳数据集VOC格式-1980张

数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1980 标注数量(xml文件个数):1980 标注类别数:5 标注类别名称:["dog","p…

C# Blazor 学习笔记(0):初识Blazor

文章目录 Blazor是什么适合人群 开始学习BlazorBlazor资源如何创建BlazorBlazor 基础知识介绍文件分布Razor和cshtml的区别Razor介绍 Blazor是什么 Blazor是微软推出的前端框架,有两种形式,以下以Blazor Server为主。具有一下特点 前端是用C#而不是JS前…

STM32使用HAL库中外设初始化MSP回调机制及中断回调机制详解

STM32使用HAL库之Msp回调函数 1.问题提出 在STM32的HAL库使用中,会发现库函数大都被设计成了一对: HAL_PPP/PPPP_Init HAL_PPP/PPPP_MspInit 而且HAL_PPP/PPPP_MspInit函数的defination前面还会有__weak关键字 上面的PPP/PPPP代表常见外设的名称为…

模板方法设计模式(C++)

定义 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。 ——《设计模式》GoF Template Method模式是一种非常基…

元素2D转3D 椭圆形旋转实现

椭圆旋转功能展示 transform-style: preserve-3d;(主要css代码) gif示例(背景图可插入透明以此实现边框线的旋转) 导致的无法点击遮挡问题可以参考我的另一个文章 穿透属性-----------------------css穿透属性 实时代码展示

Unity之webgl端通过vue3接入腾讯云联络中心SDK

腾讯云联络中心SDK:云联络中心 Web-SDK 开发指南-文档中心-腾讯云 (tencent.com) 1 首先下载Demo ​ 1.1 对其进行解压 ​ 1.2根据文档操作 查看README.md,根据说明设置server下的dev.js里的相关参数。 然后打开电脑终端,cd到项目的路径: ​ 安装…

kafka权威指南(阅读摘录)

零复制 Kafka 使用零复制技术向客户端发送消息——也就是说,Kafka 直接把消息从文件(或者更确切地说是 Linux 文件系统缓存)里发送到网络通道,而不需要经过任何中间缓冲区。这是 Kafka 与其他大部分数据库系统不一样的地方&#…

单元测试之 - Review一个微服务的单元测试

这里以github上一个microservice的demo代码为例,来看看如何为一个完整的服务编写单元测试。具体代码如下所示,我们重点查看一下catalog和customer,order中的单元测试有哪些。 首先来看catalog服务的单元测试,这个服务下面主要编写了CatalogWe…

什么是微服务

微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责自治:团队独立、技术独立、数据独立,独立部署和交付面向服务:服务提供统一标准的接口&#xff0…

交通运输安全大数据分析解决方案

当前运输市场竞争激烈,道路运输企业受传统经营观念影响,企业管理者安全意识淡薄,从业人员规范化、流程化的管理水平较低,导致制度规范在落实过程中未能有效监督与管理,执行过程中出现较严重的偏差,其营运车…

【性能测试】性能数据采集工具nmon安装使用及报告参数含义详解

目录 nmon nmon下载 解压安装 启动 数据采集配置 生成图形结果 nmon报告中的参数含义 资料获取方法 nmon nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文…

中小企业实施MES管理系统,这几点需要注意

制造业是中国经济命脉所系,是立国之本、强国之基。作为世界制造大国,制造业一直是热门话题。当下,中小制造企业的产业地位不断提升,想要规范生产制造、提升产品竞争力,进行实施MES管理系统解决方案的企业越来越多。那么…

Redis缓存预热

说明:项目中使用到Redis,正常情况,我们会在用户首次查询数据的同时把该数据按照一定命名规则,存储到Redis中,称为冷启动(如下图),这种方式在一些情况下可能会给数据库带来较大的压力…

不懂这些专业名词,你很难成为有水平的项目经理——数据分析篇

大家好,我是老原。 前段时间我们项目组招了个新人小林,让他去和产品经理对下产品上线情况,等到下班也没等来反馈。 第二天在茶水间遇到了产品经理就问了一嘴,才知道已经对接到位了。 一问小林才知道,他完全不知道产…

《剑指offer》(4)二叉树篇

二叉树深度有两种递归思路: (1)递归返回当前的深度,当root是空时,返回0 (2)将当前深度和节点一起传入递归,设置全局变量,每经过一个节点就更新全局变量的值。 方法一&a…

高速公路巡检无人机,为何成为公路巡检的主流工具

随着无人机技术的不断发展,无人机越来越多地应用于各个领域。其中,在高速公路领域,高速公路巡检无人机已成为公路巡检的得力助手。高速公路巡检无人机之所以能够成为公路巡检中的主流工具,主要是因为其具备以下三大特性。 一、高速…