不要纠结,直接选择用perl编译!
告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦
告诫,以下执行的每一步,都不要纠结
先安装环境
- nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-installer-x64.exe
- perl 64位版本
我用的是 https://www.activestate.com/platform/supported-languages/perl/,
也可以使用 https://strawberryperl.com/ - 我使用的是Windows VS2015编译器,编译器的安装就不多说了。
配置环境变量,也就是把perl和nasm的bin路径添加到环境变量path中。
在cmd中使用【perl -v】,可以验证perl是否安装成功
目标
- windows环境,vs2015编译器,x64,编译libcurl静态库。
- libcurl支持https
可能的疑问
nghttp2目录是干啥用的:用于支持http/2,如果不需要用到http/2,完全可以忽略,我在下文只会顺带提几句编译支持http/2的方法。
基础条件【磨刀不误砍柴工】
-
为了不会混乱,我就直接在桌面上创建了一个目录,存在相关代码和生成的库,基础路径【C:\Users\MR\Desktop\openssl_20241216】,每个人的电脑桌面路径不一样,不用纠结。openssl下载地址:https://openssl-library.org/source/,curl下载地址:https://github.com/curl/curl.git,这些地址可能会变,不用纠结,如果用不了,自己上网搜索就行。
-
以下是我的目录结构:curl目录是从git拉取curl代码的目录,curl_static可以忽视,我自己创建的用于存放即将生成的库,等会儿在编译的时候,会自动生成。deps目录,以及内部的子目录,先创建,不用问为什么。
编译openssl
- 下载源码,尽可能是最新版本的,因为低版本的源码编译出来的库,一些接口可能不支持。
https://github.com/openssl/openssl
- 关键步骤:在开始菜单中,找到【VS2015 x64 本机工具命令提示符】,使用管理员权限运行,打开cmd界面。
- 关键步骤:在cmd,切记,这是在上一步中,用管理员身份打开的cmd中操作
- 关键步骤:用perl编译openssl静态库,no-shared 表示编译静态库,VC-WIN64A 是x64,之后就是漫长的编译等待。
5. openssl没有指定生成目录,我这边默认是生成到 【C:\Program Files\OpenSSL】 - 把生成的openssl拷贝到deps下
【C:\Program Files\OpenSSL\include\openssl】=》【C:\Users\MR\Desktop\openssl_20241216\deps\include】
【“C:\Program Files\OpenSSL\lib\libcrypto.lib”】=》【C:\Users\MR\Desktop\openssl_20241216\deps\lib】
【“C:\Program Files\OpenSSL\lib\libssl.lib”】=》【C:\Users\MR\Desktop\openssl_20241216\deps\lib】
【“C:\Program Files\OpenSSL\lib\ossl_static.pdb”】=》【C:\Users\MR\Desktop\openssl_20241216\deps\lib】
- 关键步骤
一些可能用到的语句,可以先忽略
nmake /f Makefile.vc mode=static VC=14 WITH_SSL=static WITH_DEVEL=C:\Users\MR\Desktop\libcurl\curl\deps DEBUG=yes ENABLE_IDN=no MACHINE=x64
perl Configure VC-WIN64A no-shared
dumpbin /headers openssl.exe
curl.exe -V
curl -I https://www.google.com
nmake clean