编译步骤:

1. 下载并安装ActivePerlhttp://downloads.activestate.com/ActivePerl/,记得下载Windows版本(MSWin32)的,然后还要注意你的系统是32位(x86)还是64位(x64)。


2. 下载并解压OpenSSL的源代码http://www.openssl.org/source/

到指定目录,比如D:\openssl_src\。


3. 使用管理员权限打开Visual Studio的命令提示窗口,我这里打开的是VS2010。

openssl windows下编译过程_openssl 编译



4. 切换到OpenSSL的目录,然后编译,命令如下:

cd D:\openssl_src
D:
 
perl configure VC-WIN32 
ms\do_ms 
nmake -f ms\ntdll.mak

错误解决:

OpenSSL编译的时候提示少了strings.h头文件

修改这个文件

crypto/o_str.c

#if !defined(OPENSSL_IMPLEMENTS_strncasecmp) && \

!defined(OPENSSL_SYSNAME_WIN32) && \

!defined(NETWARE_CLIB)

# include <strings.h>

#endif


这个编译开关定义了就可以了

定义的方法在nt.mak 这个文件中的CFLAG 将-DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN

这两个宏加进去


还有一个重复定义的问题,这样也可以一并解决

链接错误

link /nologo /subsystem:console /opt:ref /debug /dll /out:out32dll\libea
y32.dll /def:ms/LIBEAY32.def @C:\Users\Unst\AppData\Local\Temp\nm75AD.tmp
bn-586.obj : error LNK2005: _bn_sub_part_words 已经在 bn_mul.obj 中定义
正在创建库 out32dll\libeay32.lib 和对象 out32dll\libeay32.exp
mem.obj : error LNK2001: 无法解析的外部符号 _cleanse_ctr
mem.obj : error LNK2001: 无法解析的外部符号 _cleanse_ctr
out32dll\libeay32.dll : fatal error LNK1120: 1 个无法解析的外部命令
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 10.0\VC\B
IN\link.EXE"”: 返回代码“0x460”
Stop.
原因:之前因为没有注意输入命令的大小写,影响了后面的编译。
办法:删了OpenSSL目录,再来一遍。



perl configure VC-WIN32

这条指令一定要注意后面的都是大写!