当前位置:网站首页 > 技术博客 > 正文

libcurl3-gnutls



libcurl 是一个跨平台的网络协议库,支持 http, https, ftp, gopher, telnet, dict, file, 和 ldap 协议。libcurl 同样支持 HTTPS 证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP 基本表单上传,代理,cookies 和用户认证。想要知道更多关于 libcurl 的介绍,可以到官网 http://curl.haxx.se/上去了解,在这里不再详述。

libcurl 没有提供编译好的库,需要自己编译,先下载 libcurl 源代码。下载方式:

  • github 页面:https://github.com/curl/curl
  • libcurl 官网:https://curl.haxx.se/download.html

笔者这里选择官网下载,下载最新版本为 ,我是 Windows 平台,所以选 zip 文件。

C___libcurl_A.png


下面介绍 3 种编译方法:

  • nmake 编译,想了解 cmake 与 nmake 的区别可以参考:5分钟理解make/makefile/cmake/nmake
  • CMake 编译,请参考:libcurl库源码编译,安装c++
  • 使用源码自带的 .sln 编译,具体步骤可参考:【C++】VS2013下CURL编译及使用示例

笔者原先使用 CMake 编译,最后生成了 libcurl.dll,但即使设置生成静态库,也没有生成 .lib,在网上查找生成 .lib 的方法,需要有链接器中配置,但源码工程中没有链接器一项,由于时间原因暂时没有深入研究下去。

也不推荐源码自带的 .sln 编译方法,因为 libcurl 依赖以下库(以下库版本为当前最新版本),还需要下载解压这些库,比较麻烦:

  • libssh2-1.9.0
  • openssl-1.1.1k

推荐使用第一种方式,笔者采用这种方法编译成功,下面详细介绍 nmake 编译方法。


nmake 编译

(1)下载完成后解压,并进入文件夹,运行

(2)在开始菜单中找到 文件夹,编译 64 位则右击 ,编译 32 位则右击 ,选择管理员方式运行。

(3)进入 curl 文件夹中的 文件夹。

(4)2019 + x64 + release + 静态编译:

 
    
  • 如需动态编译,将 mode=static 改为 mode=dll。(本文仅演示静态编译,同时 curl 官方也不建议使用动态编译)
  • 如需编译为 x86,将 MACHINE=x64 改为 MACHINE=x86。
  • 如需编译为debug版,将DEBUG=no改为DEBUG=yes。
  • 如果你是 VS2019,VC=15 建议改为 VC=14。
  • 更详细的编译指令及说明可以打开 winbuild 文件夹中的 查看。

(5)回车,等待编译完成,关闭控制台界面。编译出的库路径为 。

详细图文教程请参考:Visual Studio(VS2017/VS2019)编译并配置C/C++-libcurl开发环境


nmake 是 Microsoft Visual Studio 中的附带命令,需要安装 VS,即 Windows 上的 make。

如果不了解各个 VS 命令提示工具的区别,可以去看:VS 命令提示工具

(1)新建一个项目。本文选择新建一个名为 的空项目,修改为 Release + x64 配置;

(2)配置 include 和 lib 路径,将以下 lib 添加至工程:

 

(3)属性 -> 高级 -> 字符集下拉框,使用多字节字符集;

(4)本文使用了静态编译,所以需要将 添加至工程;

(5)本文使用了静态编译且没有编译 debug 版 libcurl,所以直接在 中将 选择为 。

  • 如果编译了 debug 版 libcurl,请分别在 中选择 、 中选择 。
  • 如果使用了动态编译,则为 和 。
 

参考:

Visual Studio(VS2017/VS2019)编译并配置C/C++-libcurl开发环境















版权声明


相关文章:

  • java中的单元测试怎么写2025-09-18 23:30:02
  • swagger springsecurity2025-09-18 23:30:02
  • 原型与原型链面试怎么答2025-09-18 23:30:02
  • arm内核的主要部件2025-09-18 23:30:02
  • 二叉树先序遍历序列2025-09-18 23:30:02
  • 基于javaweb的学生管理系统2025-09-18 23:30:02
  • 归并排序c++代码2025-09-18 23:30:02
  • linux等待进程结束2025-09-18 23:30:02
  • c++语言程序设计2025-09-18 23:30:02
  • 线程锁有哪些锁2025-09-18 23:30:02