openssl poco 编译 window mingw vs2017 x64

(2019-02-21)
Poco错误 LNK1104 无法打开文件“libeay32.lib”
注:openssl 1.1.0开始由原先的libeay32.dll、ssleay32.dll变成了libcrypto-1_1.dll、libssl-1_1.dll,一些加密方式也发生了变化。参考2

一、 vs2017 x64下编译过程

参考1:https://blog.csdn.net/liang19890820/article/details/51658574
参考2:http://www.cnblogs.com/chinalantian/p/5819105.html

1 编译openssl

1.1 下载并安装ActivePerl

链接地址:http://www.activestate.com/activeperl/downloads
我的下载:ActivePerl-5.26.3.2603-MSWin32-x64-a95bce075.exe
双击进行安装

1.2 下载并安装Nasm

下载地址:http://www.nasm.us/
我的下载:nasm-2.14.02-installer-x64.exe
本人安装在D:\NASM,将D:\NASM添加进入用户环境变量PATH

1.3下载Openssl

下载地址:http://www.openssl.org/,或者从github上下载的稳定版本。
我的下载:openssl-1.0.2q

1.4编译Openssl

管理员身份打开VS 2017的x64 本机工具命令提示,在VS 2017安装位置找。
打开到openssl解压目录:E:\Projects\Poco-Projects\openssl-1.0.2q

1.4.1 安装dmake

输入命令:ppm install dmake

1.4.2 配置编译openssl

输入命令:perl Configure VC-WIN64A no-asm --prefix=E:\Projects\Install\openssl-1.0.2q
查看目录下的Configure文件可知,如果编译静态库,则为:perl Configure VC-WIN64A no-shared --prefix=E:\Projects\Install\openssl-1.0.2q-static,但poco使用静态库,编译失败。
问题:VC-WIN64A与VC-WIN64I区别是啥?
设置:ms\do_win64a如果32位为ms\do_nasm(不设置,会出现致命错误U1001:语法错误:非法字符'{'宏停止)
编译:nmake -f ms\ntdll.mak
测试:nmake -f ms\ntdll.mak test(当nmake test进行测试openssl,发现好多功能,静态库,不支持)
安装:nmake -f ms\ntdll.mak install
如果是静态库:用ms\nt.mak替换掉上面用到的ms\ntdll.mak

2 编译poco

需要调用openssl动态库,不管是编译poco动态库还是静态库。当nmake test进行测试openssl,发现好多功能,静态库,不支持。
下载poco:1.9.1版本:https://github.com/pocoproject/poco/tree/poco-1.9.1
设置环境变量OPENSSL_ROOT_DIR为Openssl的安装目录E:\Projects\Install\openssl-1.0.2q

2.1 CMake设置

打开cmake,设置源目录:E:/Projects/Poco-Projects/poco-1.9.1-2019-02-21,设置编译目录:E:/Projects/Build/poco-1.9.1-2019-02-21,点击Configure进行配置。
配置编译器为:Visual Studio 15 2017,配置平台x64
配置安装目录:CMAKE_INSTALL_PREFIXE:/Projects/Install/poco-1.9.1-2019-02-21
设置静态库:POCO_STATICONBUILD_SHARED_LIBS设置OFF(本人链接静态库失败,最终使用了动态库)
不使用C++11,C++14,设置DISABLE_CPP11DISABLE_CPP14ON
不使用ODBC:将ENABLE_DATA_ODBC设置为OFF
不使用MONGODB:,将ENABLE_MONGODB位置为OFF

二、 Window下编译过程(MinGW x64)

参考1:https://wiki.qt.io/Compiling_OpenSSL_with_MinGW
参考2:https://codeday.me/bug/20180110/117164.html

1. 下载安装:MSYS2

链接地址:http://www.msys2.org/ ,网站上也有安装说明。
本人下载:msys2-x86_64-20180531.exe

2. 初始化MSYS2

参考:https://wiki.qt.io/MSYS2
在菜单里打开:MSYS2 MSYS终端,输入命令进行更新。

pacman -Sy
pacman --needed -S bash pacman pacman-mirrors msys2-runtime

更新完后,重新打开终端,输入命令更新

pacman -Su

更新完后,重新打开终端,输入命令更新

pacman -S base-devel git mercurial cvs wget p7zip
pacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

3. 编译openssl x64

打开终端,打开openssl文件夹:cd /e/Projects/MinGW/OpenSSL_1_1_1-dynamic/
配置: perl Configure mingw64 no-asm --prefix=/e/Projects/MinGW/Install/OpenSSL_1_1_1-dynamic
make depend
make
make test
make install

用mingw编译带openssl 的poco,不好弄,还是用vs吧

你可能感兴趣的:(openssl poco 编译 window mingw vs2017 x64)