Windows下如何编译OpenSSL以及cmake如何集成Op
2020-01-08 本文已影响0人
生活简单些
最近项目需要将live555项目转成cmake的项目,然后发现最新的live555依赖OpenSSL, 在linux下安装OpenSSL很容易, Windows下似乎需要自己编译源码:
Ubuntu Linux下安装openssl通过apt就能安装,然后cmake就能找到它:
apt install openssl libssl-dev
安装成功后可以看下安装信息:
~$ openssl version -a
OpenSSL 1.1.1 11 Sep 2018
built on: Tue Nov 12 16:58:35 2019 UTC
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-kxN_24/openssl-1.1.1=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
cmake中如何集成OpenSSL:
find_package(OpenSSL REQUIRED)
target_link_libraries(your_project_name OpenSSL::SSL)
但是,Windows下没有apt-get install 这种包管理器, 想用获取OpenSSL的lib以及头文件,必须手动编译源码,步骤如下:
- 手动安装openssl前要安装perl,官网地址: https://www.activestate.com/products/perl/downloads/;
- 手动下载 openssl,官网地址:https://www.openssl.org/source/,当前版本是
openssl-1.1.1d.tar.gz
; - 解压OpenSSL放到C盘(可自己随意指定):c:\openssl-1.1.1d;
- cd进入c:\openssl-1.1.1d, 下面步骤是confire和install:
ps>perl Configure VC-WIN64 no-asm --prefix=c:\openssl-1.1.1d\build
ps>nmake
ps>nmake install // 必须是以管理员权限进入powershell来执行此操作
VC-WIN64:这里是vc++64位环境编译,如果指定target为32位,既改为VC-WIN32
no-asm:不使用“NASM”优化,否则要单独下载
--prefix:openssl安装目录, 必须是绝对路径
如何集成到windows下的cmake项目呢?
其实,cmake脚本不需要改动任何配置,仅仅需要在Windows系统变量里定义一个新的变量:
OPENSSL_ROOT_DIR
环境变量的值即为openssl编译成功的库所在路径,即:c:\openssl-1.1.1d\build
.
that's all!!!