windows下openssl编译过程及错误

openssl的编译让我纠结了快两个夜晚了,终于在今天编译出来了.......
 

记录下编译此库的种种。

  正常过程可以参考此文,图文攻略
  http://blog.chinaunix.net/space.php?uid=20479991&do=blog&id=216269

  简单点说就是
  1) 安装Actionperl编译环境
  2) 打开cmd命令行,进入openssl文件路径
  3) 敲入perl Configure VC-WIN32 命令,运行
  4) 敲入ms\do_ms 命令(注意是‘\’),运行
  5) 打开你要用到的编译器(VC6,VC9等)找到bin目录下的vcvars32.bat,拖入cmd中,运行,自动配置编译环境。
  6) 敲入nmake -f ms/ntdll.mak,运行
 
  基本上没出现stop就算成功了,out32dll中的libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib就是编译完的库

  出现的错误
  1)NMAKE : fatal error U1077: 'ml' : return code '0x1'
  解决方法就是下载一个新的MASM,版本8以上,具体方法可以参见
  http://finebree.blog.163.com/blog/static/878793552008102474254280/
  将c:/masm32/bin 下的ml.exe覆盖掉即可


  2)NMAKE : fatal error U1077: 'cl' : return code '0x2'
  解决方法是禁用IPV6
  将原来perl Configure VC-WIN32替换成perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0

  3)ml不是内部或外部命令,也不是可运行的程序或批处理文件
  解决方法是 右键点击我的电脑->属性->高级系统设置->环境变量->系统变量中在path中将ml.exe的路径添加进去。例如我的ml.exe的路径是C:\masm32\bin,就在path中添加C:\masm32\bin;


  4)fatal error LNK1103: debugging information corrupt; recompile module
  解决办法是 在敲入  ms\do_ms命令后,进入openssl中的ms路径下,找到ntdll.mak文件,将里面所有的/debug都删除掉,然后保存。再进行第五步

第一步下载:https://www.openssl.org/source/ 找到1.1的,下好解压

第二步下载:https://www.activestate.com/activeperl 下好对应版本然后安装

第三步下载:http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D 推荐找不带"rc"的下载,这玩意不会自己加环境变量需要手动把它的路径加进PATH

第三步:从开始里找到vs的命令提示,vs2017的叫"适用于 VS 2017 的 x64 本机工具命令提示",vs2008的叫"Visual Studio 2008 x64 Win64 命令提示",如果要编X86的就去启动X86版。

第四步:定位到OpenSSL的源码目录(第一步解压的地方)

第五步:以下多选一

  • 输入"perl configure VC-WIN64A" 这样生成的是DLL,文件在第一步解压的目录中
  • 输入"perl configure VC-WIN64A --prefix=D:\OpenSSL\x64" 这样生成的是DLL,文件在D:\OpenSSL\x64
  • 输入"perl configure VC-WIN64A no-shared --prefix=D:\OpenSSL\x64"这样生成的是静态LIB,文件在D:\OpenSSL\x64
  • 若需要x86的就把上面VC-WIN64A换成VC-WIN32,这里的A带表AMD64,还有个选项VC-WIN64I对应IA64

第六步:输入"nmake"

第七步:等->死等

第八步:输入"nmake install",执行完就把include和lib给放到prefix指定的目录中了

  1. 编译过X64后再编译X86需要先nmake clean    or   nmake /f ms\ntdll.mak clean
  2. 静态编译的库在使用时需要添加额外链接库:WS2_32.LIB;GDI32.LIB;ADVAPI32.LIB;CRYPT32.LIB;USER32.LIB
  3. 动态库会依赖VC运行时,比较蛋疼.

 
  如还有其他问题,请参考
  http://www.metsky.com/archives/536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值