在Windows上编译OpenSSL

3

引用构建 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 的位置。不过我不确定是什么。


1
你是否运行了Windows安装文件中提到的所有先决条件命令?你正在尝试编译哪个版本的OpenSSL? - vpram86
是的,我正在按照INSTALL.W32中的步骤进行操作。
perl Configure VC-WIN32 --prefix=c:/some/openssl/dir ms\do_ms
但在下一步骤中失败了:nmake -f ms\ntdll.mak
- zkarthik
2个回答

2

C:\Program Files\Microsoft Visual Studio 9.0\VC\Include\io.h 复制到同一目录下并命名为 unistd.h,然后重试构建。


0

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


当我运行.bat文件时,确实会显示:“设置用于使用Microsoft Visual Studio 2008 x86工具的环境。”但是nmake -f ms\ntdll.mak仍然会产生相同的错误。 - zkarthik
如果没有区别的话,那么您可能在安装Visual Studio时选择了将这些环境变量添加到默认环境的选项(这是可选的,因为设置可能会与其他开发工具冲突,但必须以某种方式设置变量以便使用工具的命令行版本)。幸运的是,Mihai的建议似乎解决了与OpenSSL相关的具体问题。 - Stephen C. Steel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接