Windows XP SP3下编译安装openssl-1.1.0b

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows XP SP3下编译安装openssl-1.1.0b相关的知识,希望对你有一定的参考价值。

软件需要:

openssl-1.1.0b

visual studio 2010(cn_visual_studio_2010_ultimate_x86_dvd_532347.iso)

perl:ActivePerl-5.22.1.2201

nasm-2.12.03rc1-win32

环境准备:

1.从官网下载​​ActivePerl-5.22.1.2201​​并一路确认安装到硬盘中

2.打开命令提示符,第一次输入cpan会默认下载mingw,等待数分钟以后他会默认解压安装。

3.待mingw自动安装以后将会出现 cpan>提示符,在里面分别输入

install Test::More

install Text::Template

4.下载​​nasm-2.12.03rc1-win32​​并解压到d:\\develop\\2.12.03rc1\\

在系统环境变量PATH添加D:\\develop\\nasm-2.12.03rc1;

以上准备工作做好了

编译:

编译过程中用过VC6/VC7均编译失败,后来网上找到原因:

openssl-1.0.0a必须用vs2008编译,VC6+nasm32是无法编译了,因为openssl-1.0.0a要求cl.exe的版本比较高,vc6无法编译,所以用vs2008编译。

本文选用了2010

vc7报错:

async_win.obj : error LNK2019: unresolved external symbol _ConvertFiberToThread referenced in function _async_local_cleanup
async_win.obj : error LNK2019: unresolved external symbol _ConvertThreadToFiber referenced in function _async_fibre_init_dispatcher
async.obj : error LNK2019: unresolved external symbol _DeleteFiber referenced in function _async_job_free
async.obj : error LNK2019: unresolved external symbol _SwitchToFiber referenced in function _async_start_func
async.obj : error LNK2019: unresolved external symbol _CreateFiber referenced in function _ASYNC_init_thread
b_print.obj : error LNK2019: unresolved external symbol __ftol2 referenced in function _roundv
b_print.obj : error LNK2019: unresolved external symbol __aulldvrm referenced in function _fmtint
bss_dgram.obj : error LNK2019: unresolved external symbol __aulldvrm referenced in function _dgram_ctrl
ct_prn.obj : error LNK2001: unresolved external symbol __aulldvrm
threads_win.obj : error LNK2019: unresolved external symbol _InitializeCriticalS
ectionAndSpinCount referenced in function _CRYPTO_THREAD_lock_new
libcrypto-1_1.dll : fatal error LNK1120: 8 unresolved externals
NMAKE : fatal error U1077: link : return code 0x1
Stop.

vc6报错:

crypto\\ec\\curve25519.c(897) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(898) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3298) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3299) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3300) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3301) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3302) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3303) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3304) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3305) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3306) : warning C4244: = : conversion from __int64 to int , possible loss of data
crypto\\ec\\curve25519.c(3307) : warning C4244: = : conversion from __int64 to int , possible loss of data

Stop.

以下是完整的编译安装步骤:

perl Configure VC-WIN32 zlib,zlib-dynamic --with-zlib-include=F:\\zlib-1.2.8 --with-zlib-lib=F:\\zlib-1.2.8\\zdll.lib
nmake
nmake test
nmake install

成功以下将默认把openssl安装到C:\\Program Files\\OpenSSL,编译成品支持zlib/gzip解压缩,编程时请把zlib1.dll拷贝到程序目录

zlib-dynamic
Like "zlib", but has OpenSSL load the zlib library
dynamically when needed. This is only supported on systems
where loading of shared libraries is supported.

 

按照官方INSTALL所说zlib将会按需动态调用。

编程成功还没测试, 其中zlib是用vc6编译,openssl用vc10编译。

 

以上是关于Windows XP SP3下编译安装openssl-1.1.0b的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 7:在 Win XP 或 Windows Server 2003 下编译有啥区别?

在 C# 中为 Windows 7 和 Xp Sp3 控制 Windows 防火墙

windows XP Sp3 简体中文(官方正版认证)【微软正版XP操作系统SP3专业版】.iso 安装问题 说必须是...

windows XP Sp3 简体中文(官方正版认证)【微软正版XP操作系统SP3专业版】 怎么装呀?

找Windows XP SP3 ISO文件的下载地址

谁能给个Windows XP Professional 版本2002 SP3 的iso镜像下载的地址?拜托了各位 谢谢