libcurl库的静态库的编译

本人使用的就是编译的是不包含openssl以及libssh2的

libcurl 默认下并不支持 SFTP ,支持的话需要在编译的时候添加 libssh2 依赖项,
而libssh2 又依赖于 openssl 和 zlib 

下载源码并且编译

这次编译选择的是当前(2023年6月26日)最新版本编译
编译平台: Windows10
IDE:VS2010


1.下载一个 curl的源码库 curl-8.1.2 https://curl.se/download.html

2.在projects文件夹下
找到vc10,打开libcurl工程,因为要生成curl.lib静态库

3.选择配置 LIB Debug  Win32 ,根据你要使用的程序的配置来,如果要编译Release版本的就选择LIBRelease,因为运行时库要用一致的。
 
4.修改一下预定义宏 
    去掉这两个 
    USE_OPENSSL
    USE_LIBSSH2
    
5.点击Build,就编译成功了。


然后找到
curl-8.1.2\build\Win32\VC10\LIB Debug (或者Release下面)
下面就有个编译好的 libcurld.lib 库了。


应用


把这个库应用到你自己的工程中,也是win32 和 Debug的。

1.把之前下载的源码下的include文件夹下的curl下的头文件移动到自己工程下,以及上面生成的lib库

2.在IDE中设置好库目录,输入库名称

3.加上一个宏定义 属性配置中的预处理器
BUILDING_LIBCURL
HTTP_ONLY

4.输入库那里还需要加上其他的(思路是参考源码中的工程中做了什么样的设置)
ws2_32.lib
wldap32.lib

linux下的编译和使用

linux静态编译libcurl出.a文件,连接到自己的项目中 - 知乎

curl的一些其他问题

0)如何使用
C++进行POST请求用法介绍_笔记大全_设计学院C++使用curl发送post请求_c++ curl_Keras深度学习的博客-CSDN博客

1)查看各个路径的时间:
curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_nslookup:%{time_namelookup}\ntime_total: %{time_total}\n" "xxxx.com"

2)如果curl的时间超过1s,可以看看这个追踪一下哪一步时间久了
strace -tt 查看哪个时间段变长了

如果设置超时时间不生效
可能是域名解析的时候很长

3)
CURLOPT_DNS_USE_GLOBAL_CACHE启用时会启用一个全局的DNS缓存,此项为线程安全的,并且默认启用。
CURLOPT_DNS_CACHE_TIMEOUT设置在内存中保存DNS
系统也可以开启缓存

你可能感兴趣的:(c++)