如何在 Windows 上构建 OpenSSL、zlib 和 cURL 库

 

如何在 Windows 上构建 OpenSSL、zlib 和 cURL 库

2022年6月3日

https://developers.refinitiv.com/en/article-catalog/article/how-to-build-openssl–zlib–and-curl-libraries-on-windows

 

吉拉蓬瑟·普里潘维猜

开发者倡导者

OpenSSL、zlib 和 cURL 是开源计算机软件项目,分别用于保护计算机网络上的通信、压缩数据以及通过各种网络协议传输数据。这些项目由命令行工具、头文件和库组成。它们被许多系统、应用程序和库广泛使用,包括 Refinitiv Real-Time SDK C/C++。用户可以利用 Internet 上提供的 OpenSSL、zlib 和 cURL 库,或从源代码构建这些库的最新版本。

Refinitiv Real-Time SDK C/C++ 是一套现代开源 API,旨在通过重点关注易用性以及对广泛的 Refinitiv 和专有内容和服务的标准化访问来简化开发。它使用这些库连接到加密服务器或云端的 Refinitiv Real-Time Optimized。

本文逐步演示如何在 Windows 计算机 (Windows 10) 上从源代码构建 OpenSSL、zlib 和 cURL 库。然后,它展示了如何在 Refinitiv Real-Time SDK C/C++ 中使用这些库。主题包括:

· 构建 OpenSSL 库

· 构建 zlib 库

· 构建 cURL 库

· 将库与 Refinitiv Real-Time SDK C/C++ 结合使用

先决条件

要执行本文中的步骤,您需要有一台安装了以下应用程序的 Windows 10 计算机。

1.    Microsoft Visual Studio:使用 C++ 进行桌面开发(例如 Visual Studio 2019 或 2022)

2.    Strawberry Perl:适用于 Microsoft Windows 的 perl 环境(构建 OpenSSL 所需)

3.    Netwide Assembler (NASM): x86 CPU 架构的汇编器(构建 OpenSSL 所需)

4.    解压工具,比如WinRAR

构建 OpenSSL 库

OpenSSL 是一个软件库,为保护计算机网络通信安全的应用程序实施 SSL 和 TLS 协议。它被互联网服务器广泛使用,包括大多数 HTTPS 网站。它包含两个库:libssl 和 libcrypto。libcrypto 库提供了 libssl 使用的基本加密例程。

以下步骤显示如何在 Windows 10 计算机上从 OpenSSL 源包构建 OpenSSL 库和二进制文件。

1.下载并解压OpenSSL源码包

OpenSSL是开源的,源代码可以在OpenSSL官方网站(https://www.openssl.org)上获取。在撰写本文时,OpenSSL 软件包的当前版本是openssl-1.1.1o和openssl-3.0.3。

我将下载openssl-1.1.1o软件包,但本文中提到的步骤也可以与openssl-3.0.3软件包一起使用。

首先,下载OpenSSL源码包(openssl-1.1.1o.tar.gz)并解压到本地目录,例如C:\local\src。

2.配置包

要执行此步骤,必须将 Perl 和 NASM 目录添加到Path环境变量中。

您可以在命令提示符下运行“ perl -v ”和“ nasm -v ”来测试它。

perl -v

…

nasm -v

复制

从上一步开始,所有文件都被提取到openssl-1.1.1.o目录中。运行Visual Studio 的 x64 Native Tools 命令提示符,然后将目录更改为C:\local\src\ openssl-1.1.1.o。

然后,运行config命令配置OpenSSL源码包。 

perl Configure VC-WIN64A –prefix=c:\local\openssl1.1.1

我使用以下选项运行配置命令。

选项

描述

–prefix= c:\local\openssl1.1.1

安装目录树的顶部。OpenSSL 库将在此目录中创建 (c:\local\openssl1.1.1)

其他选项请参考OpenSSL源码包中的 INSTALL文件。

3. 构建 OpenSSL 库

运行nmake命令来构建 OpenSSL 库(libcrypto 和 libssl)和 OpenSSL 二进制文件 (openssl)。 

nmake

库将构建在顶级目录中,二进制文件将位于apps子目录中。

最后,运行“ nmake install ”命令在机器上安装OpenSSL。 

nmake install

该命令将在–prefix选项指定的目录中安装所有 OpenSSL 组件( C:\local\openssl1.1.1 )。OpenSSL 配置文件位于C:\Program Files\Common Files\SSL目录中。

这些库位于C:\local\openssl1.1.1\lib和C:\local\openssl1.1.1\bin目录中,OpenSSL 二进制文件位于C:\local\openssl1.1.1\bin目录中。 

至此,OpenSSL 二进制文件和库文件已正确构建。 

构建 zlib 库

Zlib 是一个免费的通用无损数据压缩软件库,可在任何计算机硬件和软件平台上使用,包括 Linux、macOS 和 Windows。zlib 数据格式本身可以跨平台移植。以下步骤演示了如何在 Windows 10 计算机上从 zlib 源包构建 zlib 库。

1.下载并解压zlib源码包

Zlib 是开源的,源代码可以在 zlib 官方网站(https://zlib.net/)上获取。在撰写本文时,zlib 软件包的当前版本是 zlib-1.2.12。下载zlib源码包(zlib-1.2.12.tar.gz)并解压到本地目录,例如C:\local\src。

2. 构建 zlib 库

从上一步中,所有文件都被提取到zlib-1.2.12目录中。运行Visual Studio 的 x64 本机工具命令提示符,然后将目录更改为C:\local\src\zlib-1.2.12。

然后,运行nmake命令来构建 zlib 库。 

nmake /f win32/Makefile.msc

将在C:\local\src\zlib-1.2.12目录中创建以下文件。

· zlib.lib: zlib静态库

· zlib.pdb: zlib.lib的程序数据库       文件

· zdll.lib:  zlib1.dll的导入库

· zlib1.dll: zlib 共享库

· zlib1.pdb: zlib1.dll的程序数据库       

3.复制zlib文件

在这一步中,zlib头文件和库文件将被复制到新的zlib文件夹中。首先,为 zlib 文件创建一个新文件夹,例如C:\local\zlib。 

然后,将 zlib.h和zconf.h文件从C:\local\src\zlib-1.2.12复制到C:\local\zlib\include。 

最后,将zlib库文件从C:\local\src\zlib-1.2.12复制到C:\local\zlib\lib目录。

至此,zlib库文件就正确构建完成了。 

构建cURL库

cURL 是一个计算机软件项目,提供用于使用各种网络协议传输数据的库和命令行工具。它在许多平台上的构建和工作方式都是相同的。cURL 支持 HTTPS,当指定 HTTPS 等安全协议时,默认执行 SSL 证书验证。它依赖 OpenSSL 库来执行 SSL 证书验证。

以下步骤展示了如何在 Windows 10 计算机上从 cURL 源包构建 cURL 库和 cURL 二进制文件。此外,cURL 库和 cURL 二进制文件将使用前面部分中创建的 zlib 和 OpenSSL 库。

1.下载并解压cURL源码包

cURL 是开源的,源代码可以在 cURL 官网(https://curl.se/download.html)上获取。在撰写本文时,cURL 包的当前版本是curl-7.83.1。

首先,下载cURL源码包(curl-7.83.1.tar.gz)并解压到本地目录,例如C:\local\src。

2. 构建 cURL 库

从上一步中,所有文件都被提取到curl-7.83.1目录中。运行Visual Studio 的 x64 Native Tools 命令提示符,然后将目录更改为C:\local\src\curl-7.83.1 \ winbuild。

cURL 支持许多底层协议。我们可以在构建库时对其进行配置。以下部分演示了构建分别支持 Schannel 和 OpenSSL 的 cURL 库的方法。 

2.1 构建使用Schannel和zlib的cURL库

Microsoft 安全通道 (Schannel) 是一个安全包,可促进在 Windows 平台上使用安全套接字层 (SSL) 和/或传输层安全性 (TLS) 加密。Schannel 将使用 Windows 证书存储中的证书。

运行以下nmake命令来构建 cURL 库以及使用 Schannel 和 zlib 的 cURL 二进制文件。 

nmake /f Makefile.vc mode=dll MACHINE=x64 WITH_ZLIB=dll ZLIB_PATH=C:\local\zlib复制

我使用以下选项运行nmake命令。

选项

描述

模式=dll

构建cURL动态库

机器=x64

目标架构(默认为x86)

WITH_ZLIB=dll 

启用 zlib 支持、DLL 或静态

ZLIB_PATH=C:\local\zlib

zlib 的自定义路径 (C:\local\zlib)

cURL 文件构建在.\builds\libcurl-vc-x64-release-dll-zlib-dll-ipv6-sspi-schannel目录中。

cURL 和 DLL 文件位于bin目录中。

2.2 构建使用OpenSSL和zlib的cURL库

可以构建 cURL 以支持 OpenSSL。运行以下nmake命令来构建使用 OpenSSL 和 zlib 的 cURL 库和 cURL 二进制文件。

nmake /f Makefile.vc mode=dll MACHINE=x64 WITH_SSL=dll SSL_PATH=C:\local\openssl1.1.1 WITH_ZLIB=dll ZLIB_PATH=C:\local\zlib复制

我使用以下选项运行nmake命令。

选项

描述

模式=dll

构建cURL动态库

机器=x64

目标架构(默认为x86)

WITH_SSL=dll

启用 OpenSSL 支持、DLL 或静态

SSL_PATH=C:\local\openssl1.1.1

OpenSSL 的自定义路径 (C:\local\openssl1.1.1)

WITH_ZLIB=dll 

启用 zlib 支持、DLL 或静态

ZLIB_PATH=C:\local\zlib

zlib 的自定义路径 (C:\local\zlib)

cURL 文件构建在 .\ builds\libcurl-vc-x64-release-dll-ssl-dll-zlib-dll-ipv6-sspi目录中。

cURL 和 DLL 文件位于bin目录中。

其他选项请参考winbuild目录下的README.md文件。 

至此,cURL 二进制文件和库文件已正确构建。 

将库与 Refinitiv Real-Time SDK C/C++ 结合使用

OpenSSL、zlib 和 cURL 可与 Refinitiv Real-Time SDK C/C++ 应用程序结合使用,以连接到加密服务器或云端的 Refinitiv Real-Time Optimized。Windows 上的 Refinitiv Real-Time SDK C/C++ 使用支持 Schannel 的 libcurl。  

1. 将以下文件复制到 Refinitiv Real-Time SDK C/C++ 应用程序的当前目录。

· C:\local\zlib\lib\zlib1.dll

· C:\local\openssl1.1.1\bin\libcrypto-1_1-x64.dll

· C:\local\openssl1.1.1\bin\libssl-1_1-x64.dll

· C:\local\src\curl-7.83.1\builds\libcurl-vc-x64-release-dll-zlib-dll-ipv6-sspi-schannel\bin\libcurl.dll

2. 运行应用程序。该应用程序加载在工作目录中找到的 OpenSSL、zlib 和 cURL 库,然后连接到 Refinitiv Real-Time Optimized 上的加密服务器。

概括

OpenSSL、zlib 和 cURL 是开源且流行的软件项目,用于保护计算机网络上的通信、压缩数据以及通过各种网络协议传输数据。用户可以轻松地从项目的源代码构建二进制包。通过这种方法,用户可以获得最新版本的软件包。本文逐步演示如何在 Windows 10 计算机上从源代码构建 OpenSSL、zlib 和curl 库。构建包有几个步骤。第一步是从项目官方网站下载源代码包。第二步是解压包。第三步是配置包,最后一步是构建包。结果包含可执行文件、开发库和头文件。

参考

1. 卷曲。和 卷曲。[在线] 网址:< https://curl.se/ > [2022 年 5 月 3 日访问]。

2.En.wikipedia.org。nd  cURL – 维基百科,免费的百科全书 [在线] 网址:< https://en.wikipedia.org/wiki/CURL > [5 月 3 日访问

3.OpenSSL。和 OpenSSL。[在线] 网址:< https://www.openssl.org/ > [2022 年 5 月 3 日访问]。

4.En.wikipedia.org。nd  OpenSSL – 维基百科。[在线] 网址:< https://en.wikipedia.org/wiki/OpenSSL > [5 月 3 日访问

5.Developers.refinitiv.com。nd  Refinitiv 实时 C++ SDK | 路孚特开发商。[在线] 网址:< https://developers.refinitiv.com/en/api-catalog/refinitiv-real-time-opnsrc/rt-sdk-cc > [2022 年 5 月 3 日访问]。

6.En.wikipedia.org。nd  zlib –维基百科 [在线] 网址:< https://en.wikipedia.org/wiki/Zlib > [5 月 11 日访问

7.Zlib.net。nd  zlib 主页。[在线] 网址:< https://zlib.net/ > [访问日期:2022 年 5 月 11 日]。

8. Bacon, M., nd 什么是 Microsoft Schannel(Microsoft 安全通道)?– 定义来自 WhatIs.com。[在线]TechTarget。网址为:< https://www.techtarget.com/searchsecurity/definition/Microsoft-Schannel-Microsoft-Secure-Channel > [2022 年 5 月 24 日访问]。

 

 

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注