作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在按照 OpenSSL User Guide 中的说明进行操作,链接到 a guide by 3noch用于编译 OpenSSL。以下是我使用的工具/版本:
按照说明,我可以毫无问题地执行以下命令:
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/
我是一名优秀的程序员,十分优秀!