目的
编译curl,且需要支持ssl和传输gzip压缩
zlib源码安装
http://zlib.net/
解压zlib-1.2.8.tar.gz到文件夹中,然后使用cmake默认生成vs工程文件
用vs2019打开
生成,之后我们会用到在项目路径生成的debug和release文件夹
openSSL源码安装的一系列坑
环境: win11 64位,vs2019
需要的工具:perl nasm openssl源码包
注意,如果要编译64位的,perl也要安装64位的,并且如果采用msvc的编译器,perl需要安装ActivePerl
1.安装perl http://www.perlchina.org/get.html
卸载perl state clean uninstall
注册账号,选择配置,他会在线给你build一个,供你下载
注意,需要复制到传统的cmd中执行
2.(可选)下载nasm,用于采用openssl的部分汇编优化,可以不启用,将nasm配置到path环境变量
3.下载openssl的源码https://curl.se/download.html#Win64 curl-7.83.0.tar.gz
搜索->x64 Native Tools Command Prompt for VS 2019->右键选择更多->以管理员身份运行
注意有以下四种,我们这里要使用x64的
x64_x86是在64位中交叉编译32位
cd 到解压的openssl源码目录
perl Configure VC-WIN64A no-asm #--prefix 可以指定openssl的安装目录
nmake
nmake test # 如果卡住,则使用nmake TESTS=-70 test 跳过
nmake install #默认安装到C:\Program Files\OpenSSL
未解决问题,test时会卡在70
经过如下尝试,仍未解决,但可使用nmake TESTS=-70 test
跳过
https://github.com/openssl/openssl/issues/10812
https://github.com/openssl/openssl/issues/11719
https://github.com/openssl/openssl/issues/7203
尝试过更换perl版本仍是同样问题
make TESTS=test_sslversions test
makefile: 56: *** missing separator. Stop.
编译curl
https://curl.se/download.html
curl-7.83.0.zip
-
打开CMake gui
-
自己补充zlib的路径,分别是源码路径,build结果的的debug和release路径
-
在CURL中找到如下选项,启用ssl,再次点击configure
-
可以指定自己编译出的openssl相关文件
-
最后点击generate
到生成目录下运行make命令,最终在lib目录中得到需要的lib
头文件则在一开始下载的源码的include里
测试之 unable to get local issuer certificate
注意如果提示ssl Certificate Verification相关错误,则是未添加受信任的ca证书,本地添加即可
https://curl.se/docs/sslcerts.html
测试之 302
测试./curl.exe https://baidu.com 时
出现302不要慌,302是重定向的意思
加上-L参数,让curl跟随重定向即可正常
参考资料
https://github.com/hellmonky/note/blob/master/RPC%E8%B0%83%E7%94%A8%E8%BF%87%E7%A8%8B%E7%9B%B8%E5%85%B3%E8%AE%B0%E5%BD%95/C%2B%2B%E8%B0%83%E7%94%A8RESTFull%20API%E5%AE%9E%E7%8E%B0%E5%8A%9F%E8%83%BD.md
https://blog.csdn.net/hujkay/article/details/18986153
https://www.cnblogs.com/obarong/p/13260321.html
https://www.cnblogs.com/heartinharbin/p/13926654.html
https://blog.csdn.net/kissgoodbye2012/article/details/81298629