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

news2024/9/30 1:28:36

文章目录

  • 前言
  • 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.coloradmin.cn/o/837302.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows之关闭占用端口的进程

1. 查询端口占用进程,这里以8001为例 netstat -ano | findstr 8001 2.结束进程 taskkill -pid 37072 -f

解释器模式-自定义语言的实现

有时,我们希望输入一串字符串,然后计算机能够按照预先定义的文法规则来对这个字符串进行解释,从而实现相应的功能。 例如,我们想实现简单的加减法接收器,只需输入一个表达式,它就能计算出表达式结果。比如…

SpringBoot统一功能处理(拦截器)

1.用户登录权限校验 1.1自定义拦截器 写一个类去实现HandlerInterceptor接口表示当前类是一个拦截器,再重写HandlerInterceptor接口中的方法,preHandle为在方法执行前拦截,postHandle为方法执行中拦截,afterCompletion为方法执行中拦截.需要在什么时候拦截就重写什么方法 Co…

微信公众号自动登录方案

基于微信公众号登录 借助微信公众号来试实现社区登录。登录的时候展示的是一个二维码,但实际上的操作是借助这个展示的过程,和前端构建一个半长连接,当用户向公众号发送验证码之后,微信公众平台会将用户发送的消息转发给服务器&a…

Unity进阶--通过PhotonServer实现联网登录注册功能(服务器端)--PhotonServer(二)

文章目录 Unity进阶--通过PhotonServer实现联网登录注册功能(服务器端)--PhotonServer(二)服务器端大体结构图BLL层(控制层)DAL层(数据控制层)模型层DLC 服务器配置类 发送消息类 以及消息类 Unity进阶–通过PhotonServer实现联网…

Gartner发布《2023年全球RPA魔力象限》:90%RPA厂商,将提供生成式AI自动化

8月3日,全球著名咨询调查机构Gartner发布了《2023年全球RPA魔力象限》,通过产品能力、技术创新、市场影响力等维度,对全球16家卓越RPA厂商进行了深度评估。 弘玑Cyclone(Cyclone Robotics)、来也(Laiye&am…

【蓝图】p47下车减速功能

p47下车减速功能 p47下车减速功能加速功能下车减速功能 p47下车减速功能 加速功能 上图是ue自带的加速功能,检测到按w时输入轴会传1给设置油门输入,就会加速 所以,减速也可以通过蓝图反方向制作 下车减速功能 打开Sedan蓝图类的上下车图表…

day51-Mybatis-Plus/代码生成器

1.Mybatis-Plus 定义&#xff1a;是一个Mybatis的增强工具&#xff0c;只在Mybatis基础上增强不做改变&#xff0c;简化开发&#xff0c;提升效率 2.MP实战 2.1 创建springboot工程&#xff0c;勾选web&#xff0c;引入依赖 <dependency> <groupId>mysql<…

人工智能可解释性分析导论(初稿)

目录 思维导图 1.黑箱所带来的问题 2.从应用面论述为什么要进行可解释性分析 2.1可解释性分析指什么 2.2可解释性分析结合人工智能应用实例 2.3 可解释性分析的脑回路&#xff08;以可视化为例如何&#xff09; 3.如何研究可解释性分析 3.1使用好解释的模型 3.2传统机器学…

antDv table组件滚动截图方法的实现

在开发中经常遇到table内容过多产生滚动的场景&#xff0c;正常情况下不产生滚动进行截图就很好实现&#xff0c;一旦产生滚动就会变得有点棘手。 下面分两种场景阐述解决的方法过程 场景一&#xff1a;右侧不固定列的情况 场景二&#xff1a;右侧固定列的情况 场景一 打开…

理解树的结构

树的重要性 二分查找算法、几种核心的排序算法以及图算法都与树有非常密切的关系。有句话锁&#xff0c;“没学会树&#xff0c;算法相当于白学”&#xff0c;可见&#xff0c;树在算法中的地位。 树的考察方面 层次遍历以及拓展问题 前后序遍历与拓展问题 中序遍历与搜索树问…

数据结构入门指南:带头双向循环链表

目录 文章目录 前言 1.结构与优势 2.链表实现 2.1 定义链表 2.2 创建头节点 2.3 尾插 2.4 输出链表 2.5 尾删 2.6 头插 2.7头删 2.8 节点个数 2.9 查找 2.10 位置插入 2.11 位置删除 2.12 销毁链表 3. 源码 总结 前言 链表一共有8种结构&#xff0c;但最常用的就是无头单…

Docker网络模型使用详解(2)Docker网络模式

安装Docker时会自动创建3个网络&#xff0c;可以使用docker network ls命令列出这些网络。 [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE ebcfad6f4255 bridge bridge local b881c67f8813 compose_lnmp_lnmp…

Vue2升级Vue3报错:Right-hand side of ‘instanceof‘ is not an object

属性prop设置多类型报错&#xff1a; Vue2 写法&#xff1a;支持用竖线隔开。Vue2 Prop expandLevel: {type: Number | String,default: 1, }, Vue3 写法&#xff1a;改为数组&#xff0c;不支持竖线隔开。Vue3 Prop expandLevel: {type: [Number, String],default: 1, }

二次元美少女【InsCode Stable Diffusion 美图活动一期】

目录 Stable Diffusion 模型在线使用地址 一、背景介绍 二、模板介绍&#xff1a; 三、操作步骤 1.在线运行地址 2.进入在线运行网址&#xff0c;并点击运行及使用 3.购买GPU并创建项目 4.打开工作台并选择算力资源 5.点击下图中所示框框 6.进入Stable Diffusion WebU…

VR内容研发公司 | VR流感病毒实验虚拟现实课件

由广州华锐互动开发的《VR流感病毒实验虚拟现实课件》是一种新型的教学模式&#xff0c;可以为学生提供更加真实和直观的流感病毒分离鉴定实验操作体验&#xff0c;从而提高学生的实验技能和工作效率。 《VR流感病毒实验虚拟现实课件》涉及了生物安全二级实验室(BSL-2)和流感病…

.jpeg转.jpg,cv2.resize()

from PIL import Image import os # 定义原文件夹路径和目标文件夹路径 source_folder "path/to/source/folder" target_folder "path/to/target/folder" # 遍历原文件夹中的所有图片文件 for filename in os.listdir(source_folder): if fil…

【iOS安全】安装Filza || 安装Flexdecrypt

&#xff08;成功&#xff09;使用Cydia安装Filza 直接在Cydia里搜索filza&#xff0c;安装“Filza File Manager” 使用Filza安装flexdecrypt 参考&#xff1a; https://github.com/JohnCoates/flexdecrypt 下载flexdecrypt.deb到手机&#xff1a; https://github.com/JohnC…

猎聘:2023届高校毕业生就业数据报告(附下载

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 较 2022 届应届生职位同比增长较明显的TOP5 一级行业为能源/化工/环保、医疗健康、汽车、机械/制造、电子/通信/半导体&#xff0c;其中能源/化工/环保同比增长为 42.30%&#xff0c;增速最高.在全世…

mybatisplus实现自动填充 时间

mybatisplus实现自动填充功能——自动填充时间 数据库表中的字段 创建时间 (createTime)更新时间 (updateTime) 每次 增删改查的时候&#xff0c;需要通过对Entity的字段&#xff08;createTime&#xff0c;updateTime&#xff09;进行set设置&#xff0c;但是&#xff0c;每…