项目背景:
在项目开发过程中,因涉及到网络数据通讯,故用到了curl+openssl。在官网上下载了curl和openssl后分别进行了编译,编译完成后经测试无异常,但随着项目的发布,用户量激增,出现了https通信失败的问题,问题现象为:在多数电脑上使用http或者https进行通信均无异常,但在个别电脑上http通信无异常但https通讯失败;根据问题现象,初步判定是curl编译时未配置支持openssl导致的,故重新进行了编译,编译curl时实现了对openssl的支持(编译指令/参数为:WITH_SSL=<dll/static>);完成编译后重新进行了测试,https通信失败的问题得到了解决;
编译过程:
1、在官网(https://curl.se/download.html)下载curl,如下图所示:
2、在官网(/index.html)下载openssl,如下图所示:
3、 在官网(Strawberry Perl for Windows)下载Perl,下载这个工具需要很长时间,这会儿可以阅读下openssl中的INSTALL.md和README.md文件。下载了很久,最终还是失败了,迫于无奈使用"魔戒"进行下载,果然速度提上来了,仅几秒钟就下载完了;如下图所示:
4、 在官网(Index of /pub/nasm/releasebuilds/2.16.01/win64)下载nasm,如下图所示:
5、解压下载的压缩包openssl-3.2.0.tar.gz、curl-8.5.0.zip,并安装PerL和nasm,这个比较简单就是运行起来点击下一步就行,安装完成后Perl会自动添加到环境变量中,而nasm则需要手动添加至环境变量中,如下图所示:
6、如果电脑上没有VS的话,下载、安装VS进行编译要简单些,本机中已安装了VS2013;
7、这时候就可以开始Openssl的编译了;
①以管理员身份打开“VS2013 x64 本机工具命令提示”;
②cd到openssl目录下;例如:cd C:\Users\yjk\Downloads\openssl-3.2.0
③使用Perl配置OpenSSL; 例如:perl Configure VC-WIN64A --prefix=D:\CURL\openssl_lib
④输入“nmake”命令开始编译;
⑤编译过程中报错:无法解析的外部符号 snprintf,该符号在函数 http_server_init 中 被引 用;
⑥重新下载了openssl-1.1.1v版本的openssl,重新进行编译,未报错;
⑦输入"nmake test"指令进行测试,测试通过;
⑧输入"nmake install"指令进行安装,安装完成;
⑨进入到输出目录“cd /d D:\CURL\openssl_lib\bin”,输入指令查看版本号 "openssl version",自此openssl编译结束;
⑩openssl编译完成后,"VS2013 x64 本机工具命令提示"窗口不要关闭,继续编译curl;
8、完成了openssl编译后开始编译crul
①cd到curl目录下;例如:cd /d C:\Users\yjk\Downloads\curl-8.5.0\winbuild;
②输入指令:”nmake /f Makefile.vc mode=dll VC=12 WITH_DEVEL=D:\CURL\openssl_lib WITH_SLL=dll“,开始编译,这个编译很快不到一分钟就编译完成了;
③编译完成后自动输出到"C:\Users\yjk\Downloads\curl-8.5.0\builds\libcurl-vc12-x64-release-dll-ipv6-sspi-schannel"文件夹中;
④注意事项:关于curl编译流程和编译指令的介绍在winbuild文件夹下的"README.md"文档中,文档介绍的很详细;“VC=12”指令参数可以在网上查相应的VS和VC的对照表;
9、至此curl+openssl编译完成,可将编译好的opessl库文件拷贝至curl编译输出目录进行测试,输入指令"curl.exe https://www.baidu.com --insecure"测试是否支持https;如图所示:文章来源:https://www.toymoban.com/news/detail-764964.html
文章来源地址https://www.toymoban.com/news/detail-764964.html
到了这里,关于Windows下编译curl+openssl的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!