我是因为老师让看这方面的资料,才想到要装openssl的,但是所给资料上不是在windows2000下安装的,所以只有在网上找自己需要的东西。但是网上的东西大体都是相似的,但对于初学者来说还是有一定的难度,抽象性太高,没有太明确的说法。这篇文章是我在openssl专业论坛上找到的,真的很好,我一次就调试通过,但还有一点需要补充,就是目录问题(导致我安装多次不成功的原因):
3中的openssl是直接解压到C盘根目录即可 点击运行,输入cmd进入命令行状态,进入openssl所在的路径,如:c:/openssl 1)和2)两条语句都需要在openssl目录下执行。其余无歧义。
作者:laodaoxu
发表时间:2003-5-14 10:51:37
准备工作:
1 安装vc6.0 路径为默认都为默认路径。
2 下载 ActivePerl-5.8.0.806-MSWin32-x86 并安装
3下载 openssl0.96i 解压到根目录下 。如c:
(我开始下载的是最新的.97a,但最后编译时候n_pkey.c老是出问题的)
开始安装:完全可以参照斑竹的文章或openssl目录下的install forw in32
1) > perl Configure VC-WIN32
: 如不成功会有明显提示
2) > ms/do_ms
: 推荐使用这种方式,我第一次成功编译就是在这种方式下
:另外两种方式 如果使用也必须保证本机有编译器才能使用。
: > ms/do_masm (默认vc 自带的编译器;也也以自己下载安装)
: ms/do_nasm (需要自己下载)
:
3)转到C:/Program Files/Microsoft Visual Studio/VC98/bin目录(默认安装时)下
执行 vcvars32.bat 以配置环境变量。
4)跳到openssl目录下
执行> nmake -f ms/ntdll.mak
:如果编译成功,最后的输出都在out32dll目录下 : 包括可执行文件 、两个dll和两个lib文件。
:
备注:
我自己是n次失败之后才最后成功的,下面是我几个主要犯错的地方。
1)使用ms/do_masm (ms/do_nasm) 方式时,要保证环境变量path 包含的几种路径下有其可执行文件。
否则就会出现 如下错误:
Building OpenSSL
ml /Cp /coff /c /Cx /Focrypto/md5/asm/m5_win32.obj ./crypto/md5/asm/m5_w
in32.asm
'ml' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.
最简单的办法是将可执行文件拷贝到path指定的目录。
不过用ms/do_ms就可以绕开这样的问题。我开始老是试着用ms/do_masm ,太折磨人。
2)同一个解压包,如果最后编译没有成功的话,最好是再完全解压重来。
尤其是你用不同的ms/do_(masm,nasm,ms)方式时.
3)编译不成功时,一定要注意看看其最后的错误。
我在编译过程中出现过:
./crypto/asn1/n_pkey.c(106) : error C2370: 'NETSCAPE_PKEY_it' : redefinition; di
fferent storage class
./crypto/asn1/n_pkey.c(103) : see declaration of 'NETSCAPE_PKEY_it'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.
和
Creating library out32dll/libeay32.lib and object out32dll/libeay32.exp
md5_dgst.obj : error LNK2001: unresolved external symbol _md5_block_asm_host
er
sha1dgst.obj : error LNK2001: unresolved external symbol _sha1_block_asm_dat
der
sha1dgst.obj : error LNK2001: unresolved external symbol _sha1_block_asm_hos
der
rmd_dgst.obj : error LNK2001: unresolved external symbol _ripemd160_block_as
st_order
out32dll/libeay32.dll : fatal error LNK1120: 4 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
甚至是
out of memory cann’t 。。。。。。。。等等
用97a出现第一种错误,我自己看过它的源代码,没有找到重新定义的情况(可能是在其它的c文件里),我
又下过97b 还是同样的问题,后来在其他的包里复制同名文件(大小相同的)都不行。最后我只好重新下载旧版本的包,最后编译才算通过。