Windows10 下通过 Visual Studio2022 编译 openssl 3.4


OpenSSL是一个强大的安全套接层(SSL/TLS)和传输层安全(TLS)协议库,它不仅支持各种加密算法,还能用于创建数字证书,包括自签名的根证书权威机构(CA)证书。本文将详细阐述如何编译 OpenSSL 并生成 CA 证书以及相关的证书文件。

1 准备环境

Win10 				64位
perl      			strawberry-5.40.0.1
Visutal Studio 		2022 Enterprise
openssl      		3.4
nasm      			NASM version nasm-2.16.03

此处省略 VS 的安装。

1.2 perl

1.2.1 ActiveState Perl 和 Strawberry Perl 的区别

ActiveStatePerl 和 Strawberry Perl 是 Windows 平台上 Perl 的编译器。
ActiveState Perl 和 Strawberry Perl 最大的区别是 Strawberry Perl 里面有多包含一些 CPAN 里的模块,所以Strawberry Perl 下载的安装文件有 80多M, 而 ActiveState Perl 只有20M 左右。

  • ActiveState Perl: ActiveState提供了一个免费的社区版本和一个商业支持的Perl用于Win32和Perl的二进制分布。
  • Strawberry Perl: 用于Windows的100%开源Perl,使用来自CPAN的模块不需要二进制包。

1.2.2 perl 下载

地址:https://www.perl.org/get.html
在这里插入图片描述
其他版本选择更多中选择,如5.38.22

在这里插入图片描述

1.2.3 验证安装

下载后默认安装,完成后在 cmd 命令行输入 perl --version 查看是否安装成功。

C:\Users\lzc73>perl --version

This is perl 5, version 40, subversion 0 (v5.40.0) built for MSWin32-x64-multi-thread

Copyright 1987-2024, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at https://www.perl.org/, the Perl Home Page.


C:\Users\lzc73>

1.2 NASM

  • NASM(Netwide Assembler)是一个开源的、可移植的汇编器,它支持多种平台和操作系统。它可以用来编写16位、32位以及64位的代码,并且支持多种输出格式,包括ELF、COFF、OMF、a.out、Mach-O等。NASM使用Intel语法,与AT&T语法的汇编器(如GNU汇编器)不同。它不生成段覆盖,也不使用MASM和TASM的自动生成段覆盖功能。
  • NASM的安装相对简单,无论是在DOS、Windows还是Unix-like系统下,都有相应的安装方法。在DOS或Windows下,可以将NASM的压缩包解压到一个目录中,然后就可以使用其中的可执行文件了。在Unix-like系统下,可以通过源代码包来编译和安装NASM。
  • NASM的命令行语法允许用户指定输出文件的格式(使用-f选项),指定输出文件的文件名(使用-o选项),以及其他多种选项,如产生列表文件(使用-l选项)、预包含文件(使用-p选项)、预定义宏(使用-d选项)等。NASM还提供了一些特殊的功能,比如TASM兼容模式(使用-t选项)、多遍优化(使用-O选项)等。
  • NASM的语法简洁,它区分大小写,需要使用方括号来引用内存地址,并且不存储变量的类型。NASM不支持ASSUME操作符,也不支持内存模型,程序员需要自己管理这些方面。

1.2.1 Windows 安装 NASM

官网下载,地址:https://www.nasm.us/

在这里插入图片描述
点击 DOWNLOAD,跳转到如下界面;
在这里插入图片描述
选择最新版本2.16.03/版本后跳转到如下界面;
在这里插入图片描述
根据自己电脑系统位数,选择wind64/后跳转到如下界面;
在这里插入图片描述

1.2.2 解压

直接选择可执行程序下载,如下zip文件,并解压;
将解压后的 nasm-2.16.03 文件夹拷贝到 C:\Program Files\nasm-2.16.03,或直接解压到 C:\Program Files 目录。
在这里插入图片描述

1.2.3 配置 NASM 的环境变量

将 C:\Program Files\nasm-2.16.03 添加到系统环境 path 变量中
在这里插入图片描述
在 cmd 命令行中输入 nasm -v 查看是否配置成功。返回对应版本就说明配置NASM成功✅。

C:\Users\lzc73>nasm -v
NASM version 2.16.03 compiled on Apr 17 2024

C:\Users\lzc73>

1.3 VS 配置

1.3.1 配置 VS nmake 的环境变量

把vs的 nmake 加入到环境变量,我们先找到自己 VS 2022 安装目录下的 nmake 所在路径,我的 nmake 所在路径:

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64

在这里插入图片描述

1.3.2 以管理员身份运行命令行

打开c:\windows\system32目录,找到cmd,右键以管理员身份运行。

1.3.3 配置 VS x64 编译环境

在 cmd 命令行中进入 VS 的 Build 目录 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build(注意:VS 安装目录),执行目录下的脚本配置将要编译的程序版本。

  • 编译64位版本执行:vcvarsall.bat x64
  • 编译32位版本执行:vcvarsall.bat x64_x86
    我要编译 x64 的 opensll,执行 vcvarsall.bat x64 配置编译64位版本的环境
C:\work\Source\Repos\WebSocket\openssl>cd C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>vcvarsall.bat x64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.11.2
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>

2 获取源代码

创建源码放置目录:C:\work\Source\Repos\WebSocket,在 cmd 命令行下clone代码

C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build>cd C:\work\Source\Repos\WebSocket
C:\work\Source\Repos\WebSocket>git clone https://github.com/openssl/openssl.git
C:\work\Source\Repos\WebSocket>cd C:\work\Source\Repos\WebSocket\openssl
C:\work\Source\Repos\WebSocket\openssl>git branch -a
* master
  remotes/origin/HEAD -> origin/master
  ...
  remotes/origin/master
  ...
  remotes/origin/openssl-3.4
  ...

迁出最新的稳定版本3.4,并建立自己本地分支 openssl-3.4j


                
<think>好的,我现在需要帮助用户寻找在Windows XP上替代MinGW的编译工具。首先,我得回顾一下用户的问题,确认他需要的是除了MinGW之外的其他工具,用于在Windows XP环境下编译文件。接下来,我需要考虑用户可能的背景,比如他们可能在开发什么类型的项目,是否有特定的需求,比如兼容性、性能或者支持的语言等。 根据用户提供的引用内容,有几个可能的方向。首先,引用[1]提到了Cygwin,这是一个兼容POSIX的环境,可以在Windows上运行类Unix的代码。这可能是一个好的替代方案,因为它允许使用GCC等工具链,同时提供类似Unix的环境。不过用户可能需要确认Cygwin在Windows XP上的兼容性,毕竟XP已经比较老旧了。 引用[2]提到重新编译Qt并使用不同的OpenGL库,或者使用v110_xp工具集来编译Qt。这可能涉及到使用Visual Studio的工具链,比如VC++的编译器,但用户可能需要安装旧版本的Visual Studio或者Windows SDK来支持XP。不过用户可能更倾向于开源或免费的工具,所以Visual Studio的社区版或者旧版本是否支持XP需要进一步确认。 引用[3]提到了mingw-w64-tools和openssl编译,这可能暗示用户在使用MinGW-w64,但用户现在想找替代品。不过mingw-w64本身是MinGW的升级版,支持64位,可能用户已经考虑过但想找其他选项。 引用[4]讨论了ReactOS,虽然这本身是一个操作系统项目,但可能相关的是ReactOS的环境是否提供编译工具。不过ReactOS主要目标是兼容Windows应用程序和驱动,可能不直接提供编译工具,但可能可以使用其环境进行开发。 此外,用户可能需要考虑其他工具如TDM-GCC,虽然这也属于MinGW的分支,但可能用户认为它是不同的选项。或者,Digital Mars的DMC编译器,这是一个老牌的编译器,支持Win32,可能在XP上运行良好。还有Embarcadero的C++ Builder旧版本,或者其他开源项目如Pelles C,Open Watcom等。 需要进一步验证这些工具是否支持Windows XP,因为很多新版本的工具可能已经放弃对XP的支持。例如,Cygwin的最新版本是否还支持XP?可能需要查阅相关文档。同样,TDM-GCC或DMC的版本是否兼容XP。 另外,用户可能需要交叉编译的工具,比如在Linux下使用MXE(M cross environment)来为Windows XP编译,但用户可能更希望直接在XP上编译。这种情况下,Cygwin或MSYS可能更合适。 总结可能的替代方案: 1. Cygwin:提供类Unix环境,自带GCC,适合需要POSIX兼容性的项目。 2. Visual Studio 2010/2012:旧版本支持XP,可以使用VC++编译器。 3. TDM-GCC:MinGW的分支,可能用户认为它是替代品。 4. Digital Mars C/C++ Compiler (DMC):轻量级,支持Win32。 5. Open Watcom:开源的传统编译器,支持DOS和Win32。 6. Pelles C:专注于Windows平台的C编译器,支持XP。 7. Clang/LLVM:可能通过特定配置支持XP,但需要检查版本和库的兼容性。 8. Borland C++ Compiler:旧版本可能支持XP,但已不再维护。 接下来需要根据用户的引用内容来关联这些工具。例如,引用[1]的Cygwin确实是一个选项,引用[2]提到的重新编译Qt可能涉及VC++或使用其他工具链。引用[3]的mingw-w64-tools可能属于MinGW的范畴,但用户想找替代品。引用[4]的ReactOS可能不直接相关,但可能提供环境支持。 最后,需要确保推荐的每个工具都明确说明其适用场景和注意事项,比如是否需要旧版本,是否免费,是否支持C/C++等语言,以及如何安装配置。同时,提醒用户注意XP系统的限制,可能某些工具的最新版本不再支持,需要寻找历史版本。</think>在Windows XP系统中,除了MinGW之外,还可以选择以下编译工具: --- ### 一、**Cygwin** [推荐兼容POSIX场景] - **核心特点**:提供完整的类Unix环境,内置GCC工具链,支持$gcc$、$g++$等命令,适合需要POSIX接口的代码编译[^1]。 - **安装示例**: ```bash # 通过Cygwin安装器选择gcc-core、g++等包 ``` - **注意事项**:需手动配置开发库路径,适合需要Unix工具链的跨平台项目。 --- ### 二、**Visual Studio 2010/2012** [推荐原生Win32开发] - **核心特点**:微软官方工具链,支持C/C++编译,可直接生成兼容Windows XP的二进制文件。 - **配置方法**: - 安装时选择**v110_xp工具集**(VS2012)或**Platform Toolset设置为XP模式**(VS2010)[^2]。 - 需搭配Windows SDK 7.1或更早版本。 --- ### 三、**Digital Mars C/C++ Compiler (DMC)** [轻量级替代] - **核心特点**:免费、体积小,支持Win32应用编译,适合小型项目。 - **使用示例**: ```bash dmc hello.c -ohello.exe ``` - **适用场景**:命令行工具或简单GUI程序的快速编译。 --- ### 四、**Pelles C** [图形化集成环境] - **核心特点**:专为Windows设计的C编译器,内置IDE,支持C11标准和WinAPI开发。 - **优势**:提供资源编辑器、调试器等工具,适合开发原生Windows应用。 --- ### 五、**Open Watcom** [传统系统兼容] - **核心特点**:开源编译器,支持16/32位程序,适合维护遗留代码或DOS/Windows混合项目。 - **典型用途**:编译早期版本的FreeDOS工具或Win32控制台程序。 --- ### 六、**Clang/LLVM** [现代工具链尝试] - **条件**:需使用较旧版本(如Clang 3.4)并搭配XP兼容的运行时库。 - **配置复杂度**:较高,需手动链接libc++或Microsoft CRT库。 --- ### 工具对比表 | 工具 | 语言支持 | 环境依赖 | XP兼容性 | 适用场景 | |----------------|------------|----------------|----------|-----------------------| | Cygwin | C/C++/POSIX| 类Unix环境 | 强 | 跨平台代码移植 | | Visual Studio | C/C++/C# | 原生Windows | 需配置 | 大型Win32应用程序开发 | | Digital Mars | C/C++ | 独立命令行工具 | 强 | 小型工具开发 | | Pelles C | C | 图形化IDE | 强 | WinAPI应用开发 | --- ### 注意事项 1. **系统限制**:Windows XP最高支持.NET Framework 4.0,部分新工具链可能无法运行。 2. **安全风险**:旧版编译器可能存在未修复漏洞,建议在隔离环境中使用。 3. **交叉编译**:若需现代工具链,可考虑在Linux中使用MXE为XP生成二进制文件。 相关问题: 1. 如何在Windows XP上配置Clang进行C语言编译? 2. Cygwin与MSYS2的主要区别是什么? 3. 如何为Visual Studio 2012添加Windows XP兼容模式支持?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值