编绎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 ...
随机推荐
- Object Pascal 数据类型
数据类型与定义变量 Object Pascal 语言的最大特点是对数据类型的要求非常严谨.传递给过程或函数的参数值必须与形参的类型一致.在Object Pascal 语言中不会看到像C 语言编译器提 ...
- FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT用法
Activity的两种启动模式: FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT 1. 如果已经启动了四个Activity:A,B,C和D ...
- js 重点 (转载)
- C++时间函数模板
//测时间 class Timer { private: clock_t _start; clock_t _end; public: Timer() { start(); } void start() ...
- Css_加载样式
第一种效果: 代码如下: <div class="loading"> <span></span> <span></span&g ...
- 编程获得CPU的主频
CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed).CPU的主频表示在CPU内数字脉冲信号震荡的速度.主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者 ...
- linux笔记:RPM软件包管理-源码包管理
源码包和rpm包的区别: 源码包安装过程: 编译安装前准备(执行./configure --prefix=路径 来配置软件的安装位置,以及做其他的配置和检查): 编译和安装(直接在目录下执行make和 ...
- 能源项目xml文件标签释义--CommonsMultipartResolver
<!-- 文件上传表单的视图解析器 --><bean id="multipartResolver" class="org.springframework ...
- Linq分页查询
//Linq分页查询 int pageIndex = Convert.ToInt32(HttpContext.Current.Request["PageIndex"]); int ...
- 发布完ArcGIS地图服务后,服务未启动成功
今天下午更新地图服务后,服务未启动成功.出来的弹出框警告问题目前应该是ArcGIS Server出了问题,打开ArcCatalog目录,查看GIS服务器下localhost下的服务,只要是今天发布的服 ...