编绎openssl杂记(window)
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)的更多相关文章
- Linux CentOS 编绎安装Python 3.5
Linux CentOS 编绎安装Python 3.5 先决条件(若无安装,则不能编绎使用idle3):yum install tk-devel xz -d Python-3.5.0.tar.xzta ...
- JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM
Nicolas Bevacqua进行了一个比较JavaScript构建(编绎)系统的任务.他对三巨头: Grunt, Gulp and NPM进行了比较,并讨论了每种的优缺点. By Nicolas ...
- 编绎报错,解决方法objc_msgSend too many arguments to function call,expected 0, have3 (转)
编绎报错,objc_msgSend too many arguments to function call,expected 0, have3 解决方法:
- 编绎OpenJDK
因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下. 本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库 ...
- CentOS编绎gcc
1.解压tar -jxvf gcc-6.3.0.tar.bz2 -C ~/dev/2.下载前前提软件包cd gcc-6.3.0 ./contrib/download_prerequisitescd . ...
- Ubuntu编绎 Objective C程序
1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...
- 编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤
编绎整个OpenJDK要很久,而且有很多东西是不需要的.研究HotSpot的话,其实只要下HotSpot部分的代码就可以了. 下面简单记录下编绎调试HotSpot一些步骤. 一.编绎 进入hotsop ...
- python 2.5源代码编绎
VS C++项目中,选择工程项名称,右菜单中选择--->仅适用于项目---->仅生成(项目) 1.make_buildinfo,make_versioninfo make_buildinf ...
- mysql 源码编绎修改 FLAGS,调试MYSQL
http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_cmake_c_flags ...
随机推荐
- caffe里的blocking_queue.hpp与.cpp干了点什么呢???
我看的一下午才明白的,因为吧,我之前都是不知道与boost::thread相关的任何知识,然后开始看各种资料啊... 妈的,我就是一个小白,没一点基础的.. 总的来说:blocking_queue实现 ...
- ListFragment
ListFragment http://developer.android.com/reference/android/app/ListFragment.html extends Fragment C ...
- extern 关键字
1 http://baike.baidu.com/view/963932.htm?fr=ala0_1_1 extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和 ...
- PacBio下机数据解读
今天被人问起如何看懂三代的下机数据,虽然解决了别人的问题,但感觉自己还是没有搞透. 基本的目录结构: |-- HG002new_O1l_BP_P6_021315b_MB_100pM | |-- D01 ...
- GATK原理及流程
用GATK跑了很久的流程,但还是不知道它的原理,现在项目要深入,没有流程可用,一切都要手动,所以必须开始着手了解GATK运行的原理,必须要知道需要输入什么,基本的算法,输出是什么. 参见: GATK使 ...
- struts2 I18N 国际化
1. 准备properties文件 globalMessages_en_US.properties globalMessages_zh_CN.properties 2. 配置struts.xml &l ...
- signalR的一些细节
获取根目录通过AppDomain.CurrentDomain.BaseDirectory 因为不能直接获取session ,使用的替代方案如下 private static Dictionary< ...
- ios开发中的toll-free bridged
所谓的Toll-free bridging是说您可以在某个框架的方法或函数 同时使用Core Foundatio和Foundation 框架中的某些类型. 很多数据类型支持这一特性,其中包括群体和字符 ...
- 5.7 WebDriver API实例讲解
本节主要详细描述WebDriver的常用API使用方法. 1.访问某网页地址 被测试网页的网址:http://www.sogou.com. Java语言版本的API实例代码: 方法1: public ...
- HTML5自学笔记[ 13 ]canvas绘图小实例之方块移动
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...