在windows上编译OpenSSL

在windows上编译OpenSSL,windows,visual-c++,compilation,openssl,Windows,Visual C++,Compilation,Openssl,引用构建OpenSSL的说明: 然后从VC++环境中 提示您执行以下操作: nmake-f ms\ntdll.mak 当我这样做的时候,我会 cl /Fotmp32\cryptlib.obj -Iinc32 -Itmp32 /MT /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_W IN32 -D_CRT_SECURE_NO

引用构建OpenSSL的说明:

然后从VC++环境中 提示您执行以下操作:

nmake-f ms\ntdll.mak

当我这样做的时候,我会

     cl /Fotmp32\cryptlib.obj  -Iinc32 -Itmp32 /MT /Ox /O2 /Ob2 /W3 /WX /Gs0
/GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_W
IN32 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_N
O_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_CMS
 -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_
ENGINE /Zl -c .\crypto\cryptlib.c
cryptlib.c
tmp32\e_os.h(438) : fatal error C1083: Cannot open include file: 'unistd.h': No
such file or directory
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\cl.EXE"' : return code '0x2'
Stop.

看起来我缺少一些环境变量的设置,这些变量将指向unistd.h。不确定它是什么。

复制
C:\Program Files\Microsoft Visual Studio 9.0\VC\Include\io.h
在同一目录下的名称
unistd.h
,然后重试生成。

查看安装Visual Studio的Common7/Tools子目录(对于典型安装C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools)用于名为vsvars32.bat的批处理文件。当您打开命令提示符时,运行此批处理文件。它将定义指向各种安装目录的环境变量,包括各种标准头文件的安装位置。

您是否运行了windows安装文件中提到的所有先决条件命令?您是哪个版本的OpenSSL尝试编译?是的。我正在按照INSTALL.W32中的步骤进行操作。>perl Configure VC-WIN32--prefix=c:/some/openssl/dir>ms\do\u ms,但在下一步失败:nmake-f ms\ntdll.mak当我运行bat文件时,它确实说:“设置使用Microsoft Visual Studio 2008 x86工具的环境。”但是nmake-f ms\ntdll.mak仍然会给出相同的错误。如果没有区别,则可能是您在安装Visual Studio时选择了将这些环境变量添加到默认环境的选项(这是可选的,因为设置可能与其他开发工具冲突,但变量必须以某种方式设置,才能使用命令行版本的工具)。幸运的是,Mihai的建议似乎解决了OpenSSL的具体问题。