windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器

不要纠结,直接选择用perl编译!

告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦

告诫,以下执行的每一步,都不要纠结

先安装环境

  1. nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-installer-x64.exe
  2. perl 64位版本
    我用的是 https://www.activestate.com/platform/supported-languages/perl/,
    也可以使用 https://strawberryperl.com/
  3. 我使用的是Windows VS2015编译器,编译器的安装就不多说了。

配置环境变量,也就是把perl和nasm的bin路径添加到环境变量path中。

在cmd中使用【perl -v】,可以验证perl是否安装成功

目标

  1. windows环境,vs2015编译器,x64,编译libcurl静态库。
  2. libcurl支持https

可能的疑问

nghttp2目录是干啥用的:用于支持http/2,如果不需要用到http/2,完全可以忽略,我在下文只会顺带提几句编译支持http/2的方法。

基础条件【磨刀不误砍柴工】

  1. 为了不会混乱,我就直接在桌面上创建了一个目录,存在相关代码和生成的库,基础路径【C:\Users\MR\Desktop\openssl_20241216】,每个人的电脑桌面路径不一样,不用纠结。openssl下载地址:https://openssl-library.org/source/,curl下载地址:https://github.com/curl/curl.git,这些地址可能会变,不用纠结,如果用不了,自己上网搜索就行。

  2. 以下是我的目录结构:curl目录是从git拉取curl代码的目录,curl_static可以忽视,我自己创建的用于存放即将生成的库,等会儿在编译的时候,会自动生成。deps目录,以及内部的子目录,先创建,不用问为什么。

编译openssl

  1. 下载源码,尽可能是最新版本的,因为低版本的源码编译出来的库,一些接口可能不支持。

    https://github.com/openssl/openssl

  2. 关键步骤:在开始菜单中,找到【VS2015 x64 本机工具命令提示符】,使用管理员权限运行,打开cmd界面。

  3. 关键步骤:在cmd,切记,这是在上一步中,用管理员身份打开的cmd中操作

  4. 关键步骤:用perl编译openssl静态库,no-shared 表示编译静态库,VC-WIN64A 是x64,之后就是漫长的编译等待。
    5. openssl没有指定生成目录,我这边默认是生成到 【C:\Program Files\OpenSSL】

  5. 把生成的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】

  6. 关键步骤

一些可能用到的语句,可以先忽略
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
相关推荐
FANGhelloworld3 小时前
C++小工具封装 —— NetWork(TCP、UDP)
c++·网络协议·tcp/ip·udp
软件技术员3 小时前
ZeroSSL Let‘s Encrypt Buypass Go SSL Google Public CA单域名证书申请教程ACMESSL.CN
网络协议·iphone·ssl
dot.Net安全矩阵4 小时前
.NET 技术 | 调用系统API创建Windows服务
windows·安全·web安全·矩阵·.net·.netcore
AlbertS4 小时前
Redis查询占用空间最大的10个key
windows·redis·scan·keys·hiberfil.sys
阳阳大魔王6 小时前
批处理命令的语法与功能
windows·笔记·命令模式·批处理
文浩(楠搏万)6 小时前
Tomcat HTTPS配置、域名解析及Java WAR包打包
java·运维·服务器·nginx·http·https·tomcat
黑客Ash6 小时前
计算机网络 | 3.数据链路层
网络·网络协议·计算机网络
Heaven6456 小时前
4.7 TCP 的流量控制
网络·网络协议·tcp/ip·计算机网络
七灵微6 小时前
【前后端】HTTP网络传输协议
网络·网络协议·http