Visual c++ 使用/MD开关构建OpenSSL库的静态版本
使用默认配置构建OpenSSL可以为您提供库的动态版本。根据its上的OpenSSL编译和安装文档,有一个名为no shared的配置选项,它禁用共享对象,只创建一个静态库Visual c++ 使用/MD开关构建OpenSSL库的静态版本,visual-c++,openssl,Visual C++,Openssl,使用默认配置构建OpenSSL可以为您提供库的动态版本。根据its上的OpenSSL编译和安装文档,有一个名为no shared的配置选项,它禁用共享对象,只创建一个静态库 Visual C++编译器将二进制(库或应用程序)链接到LIbCMT(d).LIB(静态地将本地CRT启动程序链接到使用/MT(d)的代码)或MSVCRT(d).LIB(静态CRT启动库,用于DLL UCRT和VCRUNTIME使用/MD(D))。 链接本身与CRT链接不同的二进制文件会导致冲突。不幸的是,OpenSSL没
Visual C++编译器将二进制(库或应用程序)链接到LIbCMT(d).LIB(静态地将本地CRT启动程序链接到使用/MT(d)的代码)或MSVCRT(d).LIB(静态CRT启动库,用于DLL UCRT和VCRUNTIME使用/MD(D))。
链接本身与CRT链接不同的二进制文件会导致冲突。不幸的是,OpenSSL没有给我们设置这个编译器开关的选项。它总是使用/MD构建其动态版本,使用/MT构建其静态版本。因此,当我们有其他使用/MD链接的静态库(如Qt)时,当我们想要将其静态版本链接到我们的应用程序时,我们应该做些什么呢?有一些预先构建的二进制文件在线可用,它们以这种方式链接,但总有一个自己构建OpenSSL的好理由。最重要的原因可能是安全考虑,或者有时你发现这些预编译二进制文件没有编译你想要的Visual C++版本或你想要的配置。我已经在网络上搜索过了,但是找不到一个简单的方法来使用/MD编译器开关构建OpenSSL的静态版本,而不需要额外复杂的构建脚本。其中一些只使用较旧版本的库(即1.0.x)。所以我决定分享我的方式 注意:在以下步骤中,不要在名称中有空格的目录中放置任何内容 步骤1。OpenSSL构建脚本是使用Perl编写的。因此,如果您没有Perl,请先安装它。我用的是便携版的 步骤2。您需要一个32位和/或64位版本的nasm assembler,这取决于您决定为哪个平台构建OpenSSL。你可以下载一份。将所需版本添加到系统路径 步骤3。从its下载最新稳定版本的OpenSSL源代码并将其解压缩。从干净的下载构建OpenSSL是一个好主意。因此,为以后的构建保留一份副本(可能使用不同的配置) 步骤4。打开草莓Perl portable shell并转到OpenSSL源代码目录 步骤5。使用以下命令创建OpenSSL make文件: perl配置平台[选项][--debug]--prefix=绝对路径 --openssldir=相同的路径
- 平台可以是VC-WIN32、VC-WIN64A等
- 我有一些有趣的选择:
- 无共享:禁用共享对象(仅创建静态库)
- no stdio:不要使用C头文件“stdio.h”中使用“file”类型的任何内容。使用此选项可以避免将最终二进制文件链接到crypt32.lib
- 无套接字:不构建对套接字BIOs的支持。使用此选项可以避免将最终二进制文件链接到Ws2_32.lib
- 根据OpenSSL编译和安装文档,当您想要对所有最新版本的OpenSSL(包括OpenSSL 1.0.2和1.1.0)都“正常工作”时,请同时指定--prefix和--openssldir,并将两者设置为相同的位置
享受你的时光。特别感谢我的朋友。网上有一些预先构建的二进制文件,它们以这种方式链接,但自己构建OpenSSL总是有很好的理由的。最重要的原因可能是安全考虑,或者有时你发现这些预编译二进制文件没有编译你想要的Visual C++版本或你想要的配置。我已经在网络上搜索过了,但是找不到一个简单的方法来使用/MD编译器开关构建OpenSSL的静态版本,而不需要额外复杂的构建脚本。其中一些只使用较旧版本的库(即1.0.x)。所以我决定分享我的方式 注意:在以下步骤中,不要在名称中有空格的目录中放置任何内容 步骤1。OpenSSL构建脚本是使用Perl编写的。因此,如果您没有Perl,请先安装它。我用的是便携版的 步骤2。您需要一个32位和/或64位版本的nasm assembler,这取决于您决定为哪个平台构建OpenSSL。你可以下载一份。将所需版本添加到系统路径 步骤3。从its下载最新稳定版本的OpenSSL源代码并将其解压缩。从干净的下载构建OpenSSL是一个好主意。因此,为以后的构建保留一份副本(可能使用不同的配置) 步骤4。打开草莓Perl portable shell并转到OpenSSL源代码目录 步骤5。使用以下命令创建OpenSSL make文件: perl配置平台[选项][--debug]--prefix=绝对路径 --openssldir=相同的路径
- 平台可以是VC-WIN32、VC-WIN64A等
- 我有一些有趣的选择:
- 无共享:禁用共享对象(仅创建静态库)
- 无共享:禁用共享对象(仅创建静态库)