windows-win7编译openssl-1.0.2a

本文详细介绍了如何在Windows环境下配置并编译OpenSSL 1.0.2a源码,包括解决环境配置、找不到头文件、动态库编译错误等问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载一份源码openssl-1.0.2a.tar.gz,解压,参考代码中的INSTALL.W32,步骤如下:

1、解压openssl-1.0.2a.tar

2、cd openssl-1.0.2a

3、执行perl Configure VC-WIN32,配置编译环境

4、执行ms\do_ms.bat,生成配置文件

5、执行nmake -f ms\ntdll.mak,执行编译、链接,编译结果在out32dll目录下,此命令生成动态库

出错一:

'nmake' 不是内部或外部命令,也不是可运行的程序

在vc安装目录搜索,将ide路径和nmake所在路径填到环境变量path中

本人是(仅供参考):E:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;E:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN;

出错二:

ms\uplink.c(11) : fatal error C1083: 无法打开包括文件:“windows.h”: No such file or directory
NMAKE : fatal error U1077: “"E:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.EXE"”: 返回代码“0x2”

产生原因:找不到代码文件中包含的头文件

解决办法:cmd下进入到vs安装路径\VC\Bin下,执行vcvars32.bat,此时会执行vcvas32.bat自动为当前命令提示符设置VS环境变量。

以上两个环境问题,也可以使用Visual Studio tools中的命令提示符解决。

出错三:

Assembling: tmp32\sha1-586.asm

tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
NMAKE : fatal error U1077:  'ml.EXE'  return  code  '0x1'
Stop.


解决办法在第3步中添加no-asm参数,即perl Configure VC-WIN32 no-asm,然后再继续执行后续步骤。


6、执行nmake -f ms\nt.mak,执行编译生成静态库,在out32下

此时如果出现如下错误:

cryptlib.obj : error LNK2001: unresolved external symbol _OPENSSL_ia32_cpuid

解决办法:

修改ms\do_ms.bat文件如下:

perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl debug no-asm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl debug dll no-asm VC-WIN32 >ms\ntdll.mak
if x%OSVERSION% == x goto skipce
perl util\mk1mf.pl debug no-asm VC-CE >ms\ce.mak
perl util\mk1mf.pl debug dll no-asm VC-CE >ms\cedll.mak
:skipce


perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def


参考:http://blog.youkuaiyun.com/cuiyifang/article/details/45932817

http://blog.youkuaiyun.com/dragoo1/article/details/22398473


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值