windows下安装openssl时遇到的几个问题和解决方法

来源:互联网 发布:淘宝卖家中心在哪里找 编辑:程序博客网 时间:2024/05/29 17:53

在windows环境下,在MinGW中对PBC和GMP库前需要先安装openssl

(后续安装PBC库见点击打开链接)


在此,对于安装openssl所需要的Activeperl和VC++并没有版本要求,官网下载最新即可。

但是openssl建议选择1.0.1的版本。试过装1.1.0版本用该方法装不成功。如果不是特别需求可以考虑试试1.0.1k版本。

(下载openssl-1.0.1k点击打开链接)


安装基本是参考点击打开链接
编译openssl-1.0.1k库,编译步骤如下:
openssl-1.0.1k>perl Configure VC-WIN32
openssl-1.0.1k>ms\do_ms.bat
openssl-1.0.1k>nmake -f ms\ntdll.mak


但是在安装前,建议先配置VC环境变量。
C:\>cd C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin
C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin>VCVARS32


提示:Setting environment for using Microsoft Visual C++ tools.


头两步一般没有什么问题。一般第三步可能遇到如下问题:

------------------------------------------
问题A:
openssl-1.0.1k>nmake -f ms\ntdll.mak这一步时候出现
cversion.c
.\crypto\cversion.c(80) : error C2065: 'cflags' : undeclared identifier
.\crypto\cversion.c(80) : warning C4047: 'return' : 'const char *' differs in le
vels of indirection from 'int '
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.



解决方法:

参考http://bbs.csdn.net/topics/390968960

打开C:\openssl-1.0.1k(openssl的安装目录)\crypto\cversion.c
在80行  return(cflags); 改成  return(CFLAGS); (改为大写)

------------------------------------------
问题B:

继续openssl-1.0.1k>nmake -f ms\ntdll.mak提示
'ml' 不是内部或外部命令,也不是可运行的程序
或批处理文件。


解决方法

下载masm并把其中的ml.exe拷贝至C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin下即可。

------------------------------------------

问题C:

继续openssl-1.0.1k>nmake -f ms\ntdll.mak提示

.\apps\s_cb.c(803) : error C2027: use of undefined type 'in6_addr'
        .\apps\s_cb.c(803) : see declaration of 'in6_addr'
.\apps\s_cb.c(836) : error C2027: use of undefined type 'in6_addr'
        .\apps\s_cb.c(836) : see declaration of 'in6_addr'
.\apps\s_cb.c(884) : error C2027: use of undefined type 'in6_addr'
        .\apps\s_cb.c(884) : see declaration of 'in6_addr'
.\apps\s_cb.c(917) : error C2027: use of undefined type 'in6_addr'
        .\apps\s_cb.c(917) : see declaration of 'in6_addr'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.


解决方法:

这是因为IPv6出错,

参考http://blog.csdn.net/zxzxzxzx2121/article/details/17782307

但是和他有所不同。因为已经下好了ml.exe,所以打算继续执行汇编语句

第一步改成perl Configure VC-WIN32  -DOPENSSL_USE_IPV6=0   


也就是说安装的三步是:

openssl-1.0.1k>perl Configure VC-WIN32  -DOPENSSL_USE_IPV6=0   
openssl-1.0.1k>ms\do_ms.bat
openssl-1.0.1k>nmake -f ms\ntdll.mak

------------------------------------------

然后可以执行nmake -f ms\ntdll.mak test 测试安装是否成功


0 0