如何在 Windows 上构建 OpenSSL、zlib 和 cURL 库
如何在 Windows 上构建 OpenSSL、zlib 和 cURL 库
2022年6月3日
开发者倡导者
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 日访问]。
自适应IP