文章目录
- 前言
- 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可在各种操作系统上运行,包括Windows、macOS、Linux等,使得它成为开发跨平台应用程序的理想选择。
-
轻量级:libcurl是一个轻量级的库,其代码库相对较小,因此可以在资源受限的环境中使用。
-
易于集成:libcurl的API设计简单易用,可以很容易地集成到C、C++、Python、Java等编程语言中。
-
支持代理和Cookie:libcurl支持HTTP代理,可以在代理服务器上执行数据传输。它还支持Cookie管理,使得在跨多个请求保持会话状态更加方便。
-
SSL/TLS支持:libcurl可以使用OpenSSL、libressl等库来提供安全套接层(SSL)和传输层安全(TLS)支持,从而实现安全的HTTPS传输。
-
支持FTP上传和下载:libcurl提供了强大的FTP功能,可以用于上传和下载文件到FTP服务器。
-
断点续传:libcurl支持断点续传功能,允许您在传输中断后恢复传输,从上次中断的地方继续传输文件。
由于libcurl具有强大而灵活的功能,它被广泛应用于各种应用程序和项目中。无论是开发命令行工具,还是构建网站、客户端应用程序,libcurl都是一个可靠的选择,可以帮助您轻松实现各种网络传输需求。
2、没有使用openssl以及libssh2编译libcurl的文件和使用openssl和libssh2编译
区别在于编译 libcurl 时是否链接 OpenSSL 和 libssh2 库。让我们详细解释一下:
-
编译 libcurl 时未使用 OpenSSL 和 libssh2:
- 如果在编译 libcurl 时没有链接 OpenSSL 和 libssh2 库,那么生成的 libcurl 将不支持使用 HTTPS 和 SFTP**(SSH File Transfer Protocol)**等安全传输协议。
- 这意味着您无法使用 libcurl 库来进行通过 HTTPS 或 SFTP 进行安全的数据传输。
-
编译 libcurl 时使用了 OpenSSL 和/或 libssh2:
- 如果在编译 libcurl 时链接了 OpenSSL 和/或 libssh2 库,那么生成的 libcurl 将支持 HTTPS 和/或 SFTP 等安全传输协议。
- 这意味着您可以使用 libcurl 库来进行通过 HTTPS 或 SFTP 进行安全的数据传输。
需要注意的是,HTTPS 使用 OpenSSL 库,而 SFTP 使用 libssh2 库。这两个库都提供了加密和安全传输所需的功能。
因此,如果您希望在 libcurl 中支持 HTTPS 和 SFTP 等安全协议,您需要在编译时链接 OpenSSL 和 libssh2 或其他提供相应功能的库。否则,libcurl 将只能用于不涉及加密的传输协议(如 HTTP、FTP 等)。
使用 libcurl 可以方便地在程序中进行网络通信,而通过链接 OpenSSL 和 libssh2,您可以确保通信是安全的并且可以加密传输敏感数据。
3、libcurl网络库的下载
github地址:libcurl下载。我下载的是:本人下载
下载完里面文件大概是这样子:
4、libcurl网络库的编译
4.1、直接使用cmake编译,不使用 OpenSSL 和 libssh2库编译的出来的libcurl库
- 找到文件夹中camkeLists.txt文件所在处:
- 可以看到:
- 打开 .sln 解决方案文件生成解决方案文件即可:
- 可以看到生成了libcurl-d.lib和libcurl-d.dll两个库文件:
这里就是不使用 OpenSSL 和 libssh2库编译的出来的libcurl库,前面也已经说了这种库和使用 OpenSSL 和 libssh2库编译的出来的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,在属性里面删除掉即可:
- 再次生成解决方案完成编译: