gpt4 book ai didi

c++ - 如何在 Windows 上编译 OpenSSL?

转载 作者:可可西里 更新时间:2023-11-01 13:29:40 24 4
gpt4 key购买 nike

我一直在按照 OpenSSL User Guide 中的说明进行操作,链接到 a guide by 3noch用于编译 OpenSSL。以下是我使用的工具/版本:

  • ActiveState Perl v5.20.2
  • 微软 Visual Studio 2012
  • 全网汇编程序 (NASM) v2.12.02
  • OpenSSL 1.0.2j(源压缩包)

按照说明,我可以毫无问题地执行以下命令:

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32
ms\do_ms

然后,当我继续执行

nmake -f ms\nt.mak

我收到以下内容

 Assembling: tmp32\sha1-586.asm
tmp32\sha1-586.asm(1432) : error A2070:invalid instruction operands
tmp32\sha1-586.asm(1576) : error A2070:invalid instruction operands
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\VC\BIN\ml.EXE"' : return code '0x1'
Stop.

在调查了那个问题之后,我发现了一个 blog post by HostageBrain提到那个确切的错误,说明使用 nasm 来执行编译。所以,我切换到这个命令序列:

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32
ms\do_nasm
nmake -f ms\nt.mak

但是,一旦切换到 NASM 变体,我就会收到以下错误:

tmp32\sha1-586.asm:1: error: parser: instruction expected
tmp32\sha1-586.asm:2: error: parser: instruction expected
tmp32\sha1-586.asm:3: error: parser: instruction expected
tmp32\sha1-586.asm:4: warning: label alone on a line without a colon might be in error
tmp32\sha1-586.asm:5: warning: label alone on a line without a colon might be in error
tmp32\sha1-586.asm:6: warning: label alone on a line without a colon might be in error
tmp32\sha1-586.asm:7: error: symbol `IF' redefined
tmp32\sha1-586.asm:7: error: parser: instruction expected
tmp32\sha1-586.asm:8: error: parser: instruction expected
tmp32\sha1-586.asm:9: error: comma expected after operand 1

我正在寻找的是能够将 OpenSSL 编译成 .lib 文件,然后我可以从其他 C++ 项目链接到这些文件,例如在编译 FreeTDS 时。

最佳答案

在您提到的我的博客页面上,我还描述了“无 asm”情况 - 这种情况编译更简单(它根本不需要 nasm),但缺点是 - 一些算法性能将是 2x-比汇编版本慢 4 倍。如果您的案例可以接受这种性能 - 尝试编译“no-asm”案例。

perl Configure VC-WIN32 no-asm --prefix=C:\Build-OpenSSL-VC-32

关于c++ - 如何在 Windows 上编译 OpenSSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com