欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mingw环境编译openssl 3.0

程序员文章站 2024-02-19 23:44:34
...

 

 

openssl是ssl的开源实现

SSL (Secure Sockets Layer 安全套接字协议)

很多软件都是依赖于openssl运行的,比如linux的ssh,https等

这是一个非对称加密解密的重要工具

mingw是使用windows环境实现了类似unix的开发平台

是将gnu的很多软件针对windows进行了重构

为了能在遗留开发环境Qt4.8的mingw下使用openssl,这里介绍了一种编译openssl代码的方法

这里介绍的运行环境为MSYS2

安装好MSYS2后,先安装开发工具链

pacman -S mingw-w64-i686-toolchain

$ pacman -S mingw-w64-i686-toolchain
:: 在组 mingw-w64-i686-toolchain 中有 17 成员:
:: 软件仓库 mingw32
   1) mingw-w64-i686-binutils  2) mingw-w64-i686-crt-git  3) mingw-w64-i686-gcc
   4) mingw-w64-i686-gcc-ada  5) mingw-w64-i686-gcc-fortran
   6) mingw-w64-i686-gcc-libgfortran  7) mingw-w64-i686-gcc-libs
   8) mingw-w64-i686-gcc-objc  9) mingw-w64-i686-gdb
   10) mingw-w64-i686-headers-git  11) mingw-w64-i686-libmangle-git
   12) mingw-w64-i686-libwinpthread-git  13) mingw-w64-i686-make
   14) mingw-w64-i686-pkg-config  15) mingw-w64-i686-tools-git
   16) mingw-w64-i686-winpthreads-git  17) mingw-w64-i686-winstorecompat-git

输入某个选择 ( 默认=全部选定 ):

这里可以看到我们是用了交叉编译的环境,在64位环境下编译目标位i686,使用默认安装

下面安装make及ld、perl等工具

pacman -S base-devel

$ pacman -S base-devel
:: 在组 base-devel 中有 58 成员:
:: 软件仓库 msys
   1) asciidoc  2) autoconf  3) autoconf2.13  4) autogen  5) automake-wrapper
   6) automake1.10  7) automake1.11  8) automake1.12  9) automake1.13
   10) automake1.14  11) automake1.15  12) automake1.16  13) automake1.6
   14) automake1.7  15) automake1.8  16) automake1.9  17) bison  18) btyacc
   19) diffstat  20) diffutils  21) dos2unix  22) file  23) flex  24) gawk
   25) gdb  26) gettext  27) gettext-devel  28) gperf  29) grep  30) groff
   31) help2man  32) intltool  33) lemon  34) libtool  35) libunrar
   36) libunrar-devel  37) m4  38) make  39) man-db  40) pacman
   41) pactoys-git  42) patch  43) patchutils  44) perl  45) pkg-config
   46) pkgfile  47) quilt  48) rcs  49) reflex  50) scons  51) sed  52) swig
   53) texinfo  54) texinfo-tex  55) ttyrec  56) unrar  57) wget  58) xmlto

输入某个选择 ( 默认=全部选定 ):

算上MSYS2自带的gcc,现在系统内有两个gcc

$ find / -name gcc.exe
/mingw32/bin/gcc.exe
/usr/bin/gcc.exe
/bin/gcc.exe

因此需要设置环境变量,将我们新安装的i686目标的gcc设为当前开发工具链

$ export PATH=/mingw32/bin:$PATH

将目录切换到openssl源代码根目录,执行配置脚本

$ ./Configure mingw
Configuring OpenSSL version 3.0.0-alpha7-dev for target mingw
Using os-specific seed configuration
Creating configdata.pm
Running configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************

配置结束后,我们执行make开始构建

生成的openssl程序与库都在app目录中