Windows平台下MinGW64编译Openssl3.0静态库

准备工作

官网下载openssl:/source/index.html (openssl.org)/source/index.html (openssl.org)

官网下载mysy2:MSYS2

ps:在windows平台上使用mingw64编译openssl需要一个类Unix环境,因此选择MSYS2的shell,虽然使用git bash也是可以的,但是我测试发现git bash上的perl缺少部分模块,导致无法成功configure,MSYS2安装好后默认携带一个perl,这个perl是能成功configure的

最后需要安装MinGW64,可以直接在MSYS2上安装,具体安装方法还请另行查找,我原本环境里面就有一个MinGW64,因此只需要将其添加到MSYS2的shell的环境变量中即可,添加环境变量的方法如下:

找到MSYS2的安装目录,其目录下有个etc文件夹,etc文件夹里面找到profile文件,修改profile文件

添加好环境变量后保存,重新打开MSYS2的shell输入make --version或者mingw32-make --version测试是否添加成功

Configure

下载完成的openssl源码根目录下可以看到一个Configure文件,我们需要通过MSYS2的shell进入到这个目录下面,然后执行

./Configure mingw64 -static --prefix="安装目录(绝对路径)" zlib no-dso
  • mingw64:表示是使用mingw64编译
  • static:表示编译静态库,使用no-pic no-thread no-shard效果相同
  • zlib:表示使用zlib的静态库
  • no-dso:表示不使用其他动态库

ps:具体的配置选项可以查看Configure文件,里面有部分选项解释,可以根据个人具体情况来选择

ps:Configure是一个perl程序文件,因此本质是使用perl来执行Configure生成不同编译环境下需要用到的文件,因此不一定需要用到MYSY2只要有一个perl和类Unix的shell都是可以的,perl推荐下载Strawberry Perl因为它的模块比较全,下载地址:Strawberry Perl for Windows

执行Configure完成后,当前目录下会多出一个makefile文件

开始编译

还是在openssl的源码根目录下,经过Configure后多出了一个makefile文件,然后在MYSY2的shell中执行指令

make -j8 或者 mingw32-make -j8

ps:-j8这里表示编译时使用到的cpu核心数,我这里是用的8个核心同时编译,根据自己实际情况填写即可

然后

make install -j8 或者 mingw32-make install -j8

通过上述指令将openssl安装到Configure时prefix指定的文件夹中,安装成功的情况如下:

bin目录中是openssl的可执行文件

include目录中是openssl的头文件

lib64中是编译好的静态库

其中libcrypto.a和libssl.a就是我们需要的openssl静态库了

将include中的头文件和libcrypto.a以及libssl.a文件拷贝到自己项目中即可

使用Openssl静态库

编译并将静态库拷贝到自己项目中后,要想使用openssl中的api需要在编译自己项目时多引入一些额外的静态库,一个是windows下的网络套接字库libws2_32.a,一个是windows下的密码学库libcrypt32.a, 还有一个就是zlib的静态库libz.a,正常来说MinGW64中都会包含上述三个库,如果不引入就是报错undefined reference to ...

上图就是没有引入libz.a情况下报错

结语

至此就是本次我编译openssl的全部经验,如有问题还请各位大佬多多指教,如有疑问也可以提出,我知道的一定都会回答,最后因为每个人的实际的编译环境可能不一样,因此这篇攻略不一定适用,还请仅作参考

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值