博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在 Windows下用 Visual Studio 编译 OpenSSL
阅读量:5862 次
发布时间:2019-06-19

本文共 1923 字,大约阅读时间需要 6 分钟。

到下载

以OpenSSL 1.0.0g版本为例

1、下载

2、安装 ActivePerl, 这里使用最新因为初始化的时候, 需要用到 perl 解释器。

3、使用 VS2010 下的 Visual Studio 2010 Command Prompt 进入控制台模式 (这个模式会自动设置各种环境变量,根据编译32位、64位、Itanium自己选择)。

4、解压缩 openssl 源代码包,进入 openssl 的根目录, 如 E:\openssl-1.0.0g。

5、perl configure VC-WIN32

必须在 c:\openssl-1.0.0g 目录下执行该命令, 否则找不到 Configure 文件, 这时就必须指定完整的 Configure 文件路径。

64编译的话 Win64/x64 执行 perl Configure VC-WIN64A;Win64/IA64 执行 perl Configure VC-WIN64I。

6、ms\do_ms

在 c:\openssl-1.0.0g 目录下执行 ms\do_ms 命令

64位编译的话 Win64/x64 执行 ms\do_win64a ;Win64/IA64 执行 ms\do_win64i。

7、在正式编译之前

(1). 找到 c:\openssl-1.0.0g\ms\ntdll.mak 文件, 用记事本打开, 搜索 “/MD” 字符串, 替换成 “/MT”, 这将导致静态链接 C 运行, 避免了在目标机器上安装 VC 再发行包等等操作。

(2) 如果在VC6中编译,需要找到 c:\openssl-1.0.0g\e_os.h 文件, 用记事本打开, 找到

#  if !defined(OPENSSL_USE_IPV6) #    if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) #      define OPENSSL_USE_IPV6 1 #    else #      define OPENSSL_USE_IPV6 0 #    endif #  endif

替换成

#if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER > 1200 ) #  if !defined(OPENSSL_USE_IPV6) #    if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) #      define OPENSSL_USE_IPV6 1 #    else #      define OPENSSL_USE_IPV6 0 #    endif #  endif #else #  if !defined(OPENSSL_USE_IPV6) #      define OPENSSL_USE_IPV6 0 #  endif #endif

这一步的目的是,在 VC6 下编译时, 避免使用 IPv6 特性, 因为 VC6 不支持。这里我们忽略这步。

(3)找到 c:\openssl-1.0.0g\ms\ntdll.mak 文件, 用记事本打开可以根据需要修改默认安装路径(静态链接库编译版本打开nt.mak),默认路径如下:

INSTALLTOP=\usr\local\ssl

OPENSSLDIR=\usr\local\ssl

7、编译动态链接库版本: nmake -f ms\ntdll.mak

完成编译后,输出的动态链接库版本文件在 out32dll 里面,包括应用程序的可执行文件, lib 文件和 dll 文件。

8、测试动态链接库版本: nmake -f ms\ntdll.mak test

9、安装动态链接库版本: nmake -f ms\ntdll.mak install

10、编译静态链接库版本: nmake -f ms\nt.mak

完成编译后,输出的静态链接库版本文件在 out32 里面, 包括应用程序的可执行文件和 lib 文件。

11、测试静态链接库版本: nmake -f ms\nt.mak test

12、安装动态链接库版本: nmake -f ms\nt.mak install

转载于:https://www.cnblogs.com/chinalantian/archive/2012/01/20/2327796.html

你可能感兴趣的文章
晶振不起振的原因及其解决方法
查看>>
2015年个人总结
查看>>
《系统架构师》——操作系统和硬件基础
查看>>
如何看待一本图书
查看>>
oracle参数列表
查看>>
Wordpress3.2去除url中的category(不用插件实现)
查看>>
macOS Sierra 代码显示未来 Mac 将搭载 ARM 芯片
查看>>
Linux 中如何通过命令行访问 Dropbox
查看>>
开发进度——4
查看>>
JS里验证信息
查看>>
Akka actor tell, ask 函数的实现
查看>>
windows10 chrome 调试 ios safari 方法
查看>>
Hello , Ruby!
查看>>
Netty 4.1.35.Final 发布,经典开源 Java 网络服务框架
查看>>
详解Microsoft.AspNetCore.CookiePolicy
查看>>
SCDPM2012 R2实战一:基于SQL 2008 R2集群的SCDPM2012 R2的安装
查看>>
SQL SERVER中字段类型与C#数据类型的对应关系
查看>>
Linux lsof命令详解
查看>>
SVG path
查看>>
js判断checkbox是否选中
查看>>