版本
ActivePerl: 5.12.0 Build 1200
VC: 6.0
openssl: 1.0.0
masm: 6.00.8168.0

ActivePerl,MASM, VC6.0均已安装且bin目录都在PATH环境变量中


一、 NMAKE : fatal error U1077: 'ml' : return code '0x1'

当执行>nmake -f ms\ntdll.mak

出现错误:
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

Building OpenSSL
        ml /nologo /Cp /coff /c /Cx /Fotmp32dll\sha512-586.obj tmp32dll\sha512-5
86.asm
 Assembling: tmp32dll\sha512-586.asm
MASM version 8.00 or later is strongly recommended.
error A4910: cannot open file: C:\masm32\bin\ml.err
tmp32dll\sha512-586.asm(97) : error A2008:  : mm
tmp32dll\sha512-586.asm(105) : error A2008:  : mm
tmp32dll\sha512-586.asm(107) : error A2008:  : mm
tmp32dll\sha512-586.asm(110) : error A2008:  : mm
tmp32dll\sha512-586.asm(112) : error A2008:  : mm
tmp32dll\sha512-586.asm(130) : error A2008:  : mm
tmp32dll\sha512-586.asm(133) : error A2008:  : mm
tmp32dll\sha512-586.asm(154) : error A2008:  : mm
tmp32dll\sha512-586.asm(162) : error A2008:  : mm
tmp32dll\sha512-586.asm(164) : error A2008:  : mm
tmp32dll\sha512-586.asm(167) : error A2008:  : mm
tmp32dll\sha512-586.asm(169) : error A2008:  : mm
tmp32dll\sha512-586.asm(189) : error A2008:  : mm
tmp32dll\sha512-586.asm(192) : error A2008:  : mm
tmp32dll\sha512-586.asm(214) : error A2008:  : mm
tmp32dll\sha512-586.asm(220) : error A2008:  : mm
tmp32dll\sha512-586.asm(221) : error A2008:  : mm
tmp32dll\sha512-586.asm(240) : error A2008:  : mm
tmp32dll\sha512-586.asm(248) : error A2008:  : mm
tmp32dll\sha512-586.asm(250) : error A2008:  : mm
tmp32dll\sha512-586.asm(253) : error A2008:  : mm
tmp32dll\sha512-586.asm(255) : error A2008:  : mm
tmp32dll\sha512-586.asm(275) : error A2008:  : mm
tmp32dll\sha512-586.asm(278) : error A2008:  : mm
tmp32dll\sha512-586.asm(288) : error A2008:  : mm
tmp32dll\sha512-586.asm(289) : error A2008:  : mm
tmp32dll\sha512-586.asm(290) : error A2008:  : mm
tmp32dll\sha512-586.asm(291) : error A2008:  : mm
tmp32dll\sha512-586.asm(292) : error A2008:  : mm
tmp32dll\sha512-586.asm(293) : error A2008:  : mm
tmp32dll\sha512-586.asm(294) : error A2008:  : mm
tmp32dll\sha512-586.asm(295) : error A2008:  : mm
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.


解决方法:
google几次,也没找到解决方法。仔细分析出错信息,原来是MASM的版本过低, 我安装的MASM32中
C:\masm32\bin>ml
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserv

版本是 6.14.8444,而错误提示中推荐8.00 or later ,所以只好下载MASM的高版本
这里安装MASM8.0,具体安装可参考下面的URL,
http://finebree.blog.163.com/blog/static/878793552008102474254280/

将生成的ml.exe拷贝到C:\masm32\bin目录下,将原来的ml.exe覆盖即可。

二、NMAKE : fatal error U1077: 'cl' : return code '0x2'

解决错误1后,重新nmake -f ms\ntdll.mak会出现这个错误

解决办法:
这个在openssl官方网站上找到了,方法是禁用IPV6
perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0

具体可参照
http://rt.openssl.org/Ticket/Display.html?id=2097&user=guest&pass=guest


三、总结Windows下openssl1.0.0的安装步骤

版本要求:
ActivePerl: 5.12.0 Build 1200
VC: 6.0
openssl: 1.0.0
masm: 8.0

 

 

D:\开发工具\openssl-1.0.0>perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0 --prefix=
c:\openssl-1.0.0


D:\开发工具\openssl-1.0.0>ms\do_ms

D:\开发工具\openssl-1.0.0>nmake -f ms\ntdll.mak

D:\开发工具\openssl-1.0.0>nmake -f ms\ntdll.mak test

D:\开发工具\openssl-1.0.0>nmake -f ms\ntdll.mak install