Window 下 OpenSSL 编绎过程

1. 下载 ActivePerl-5.12.4.1205  , openssl-0.9.8 , 配置Perl环境变量 , 解压openssl-0.9.8
2. 进入 CMD ,进入VS2008 / VS2010 命令提示界面. 执行: vcvarsall.bat
3. CD 切入 进入 openssl-0.9.8 解压目录 ,  执行  perl Configure VC-WIN32 no-asm
4. 执行 ms\do_ms
5. 修改编译参数 进入 ms\nt.mak 及 ms\ntdll.mak 移除参数 : /WX /G5
6. 执行 nmake -f ms\ntdll.mak (动态库) 或者 nmake -f ms\nt.mak (静态库)
本人编绎结果是: VS2010编绎 nmake -f ms\ntdll.mak 通过 , VS2008 编绎 nmake -f ms\nt.mak 通过
其中 VS2008 ntdll.mak 编绎通过,但运行异常。
7. cd out32dll 或 cd out32 切入输出目录,执行命令 ..\ms\test
结果: passed all tests 编绎成功。

配置开发环境,以 VS2008 为例:
1.工具->选项->项目和解决方案->VC++ 目录 添加两项:
    1.下拉列表切换至 包含文件 增加路径 为 OpenSSL解压路径下的 include 目录。
    2.下拉列表切换至 库文件 增加路径 为编绎后 outdll 目录 或out32dll 目录。

2.项目->属性 对话框 , 配置属性 -> 链接器 -> 命令行 添加  ssleay32.lib libeay32.lib 保存,也可取消该步骤,在代码文件中引入
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")

完成后,即可进入下一步代码调用 , 如果仍出现运行异常,尝试 项目->属性 对话框 , 配置属性 -> C/C++ -> 代码生成 运行库 切换为 多线程 DLL (/MD) , 因为OPENSSL 默认编绎 选择 /MD 模式。

补充一点,本人VS2008编绎  nmake -f ms\ntdll.mak 模式 代码无法正常运行 , 切换到 nmake -f ms\nt.mak 方式编绎 恢复正常运行。

编绎之后 Debug 模式在XP环境运行异常,原因是 XP环境中没有Debug 运行库环境,切换Release方式编绎可运行。

VS2010 之前 DLL有 程序清单配置,这个在 VS2010之后取消了。有时不同的运行环境库如VC90环境与VC100 不同编绎DLL混合运行会报错,可参考静态编绎。

检查运行环境清单:
项目->属性 对话框 , 配置属性 -> 清单工具 -> 输入和输出 嵌入清单 选否 , 如此,下次编译时,会生成同名的:  .manifest 后缀文件。

为了避免不必要麻烦, 如果 VS2008 做为开发环境,就用 VS2008做为DLL编绎环境,同理 VS2010 一样。

//////////////////////////////////////

重复编绎清除指令:
nmake -f ms\ntdll.mak clean
nmake -f ms\nt.mak clean

编绎openssl杂记(window)的更多相关文章

  1. Linux CentOS 编绎安装Python 3.5

    Linux CentOS 编绎安装Python 3.5 先决条件(若无安装,则不能编绎使用idle3):yum install tk-devel xz -d Python-3.5.0.tar.xzta ...

  2. JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM

    Nicolas Bevacqua进行了一个比较JavaScript构建(编绎)系统的任务.他对三巨头: Grunt, Gulp and NPM进行了比较,并讨论了每种的优缺点. By Nicolas ...

  3. 编绎报错,解决方法objc_msgSend too many arguments to function call,expected 0, have3 (转)

      编绎报错,objc_msgSend too many arguments to function call,expected 0, have3 解决方法:    

  4. 编绎OpenJDK

    因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下. 本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库 ...

  5. CentOS编绎gcc

    1.解压tar -jxvf gcc-6.3.0.tar.bz2 -C ~/dev/2.下载前前提软件包cd gcc-6.3.0 ./contrib/download_prerequisitescd . ...

  6. Ubuntu编绎 Objective C程序

    1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...

  7. 编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤

    编绎整个OpenJDK要很久,而且有很多东西是不需要的.研究HotSpot的话,其实只要下HotSpot部分的代码就可以了. 下面简单记录下编绎调试HotSpot一些步骤. 一.编绎 进入hotsop ...

  8. python 2.5源代码编绎

    VS C++项目中,选择工程项名称,右菜单中选择--->仅适用于项目---->仅生成(项目) 1.make_buildinfo,make_versioninfo make_buildinf ...

  9. mysql 源码编绎修改 FLAGS,调试MYSQL

    http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_cmake_c_flags ...

随机推荐

  1. Windows的命令行查看,修改,删除,添加环境变量

    查看当前所有可用的环境变量:输入 set 即可查看. 显示某环境变量: 例如:echo %SystemDrive% 类似linux下面的echo $PATH这种用法. 首先明确一点:所有的在cmd命令 ...

  2. 认识Service

    Service相对于Activity可在后台运行,五显示界面,在activity退出的情况下仍能运行. 一.新建一个空的工程,命名为learnService 二.新建一个service,并添加如下所示 ...

  3. Python中的Class的讨论

    尽管Python在Function Programming中有着其他语言难以企及的的优势,但是我们也不要忘了Python也是一门OO语言哦.因此我们关注Python在FP上的优势的同时,还得了解一下P ...

  4. !important css样式

    重要性 我们在做网页代码的时,有些特殊的情况需要为某些样式设置具有最高权值,怎么办?这时候我们可以使用!important来解决. 如下代码: p{color:red!important;} p{co ...

  5. 笔记5:QQ群聊天机器人

    之前经常在别人群里看到有自动回复消息的机器人. 功能有好多,可以玩各种游戏.觉得还蛮有意思的.. 于是就去请教别人怎么弄得,但是他们都说得好复杂,好高大上,无非就是不想让别人弄 本人是个不会轻易放弃的 ...

  6. Java之线程———GUI线程(包含打字游戏和计时器俩个GUI实列)

    当java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时会自动启动更多的线程,其中有两个重要的线程:AWT-EventQuecue 和 AWT-Windows. AWT-EventQ ...

  7. MFC学习之窗口基础

    WinMain函数 1.句柄(HANDLE):{ 1. 定义:资源的标识 2. 句柄的作用: 操作系统通过句柄来找到对应的资源,从而对这些资源进行管理和操作. 3句柄的分类:(按资源){ 1.图标句柄 ...

  8. 201. Bitwise AND of Numbers Range -- 连续整数按位与的和

    Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers ...

  9. 自定义头文件 No such file or directory

    my_file.h为你的头文件名 要用#include"my_file.h",而不能是#include<my_file.h>. 如果头文件名在尖括号<>里, ...

  10. think in java 读书笔记 1 ——移位

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 在Think in Java中 ...