编绎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 ...
随机推荐
- 在Linux或者Unix下打开,每一行都会出多出^M这样的字符
Windows上写好的文件,在Linux或者Unix下打开,每一行都会出多出^M这样的字符,这是因为Windows与*nix的换行符不同所致,我们看看文件格式有什么不同. 在Linux下查看文件格式: ...
- PV UV IP含义及区别
--------首先来看看ip.uv和pv的定义---------- PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次. UV(独立访客):即Unique Vis ...
- dede如何新建一个ajax服务端输出文件
<?phprequire_once(dirname(__FILE__)."/include/common.inc.php");AjaxHead(); $dsql-> ...
- Mybatis那一大堆事儿--1
<select id="listAmPerfTime" resultType="Date"> SELECT pam.perf_time AS per ...
- 默认选择radio的第一个
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Pictures of Ascii Art
简述 指尖上的艺术 - 通过键盘上韵律般的敲敲打打,一幅幅美轮美奂的艺术作品便跃然于屏. 这样的画作,包含了无穷的创意,糅合了现代计算机科技与传统绘画艺术,难道还有比这更令人陶醉的美妙事物吗? 简述 ...
- VI编辑器学习笔记
VIM的使用 VI是Linux系统中的一种编辑器,它的使用方法和界面与Unix平台十分相似,掌握了VIM的特殊,你可以感觉到它强大的功能与高效.Vim 相对来说较小,无论你使用任何Linux系统,你总 ...
- IDEA 创建Java Web项目
发现项目目录没有classes和lib目录,所以自己创建 点击OK,选中"Jar Directroy"-->点击"OK" 然后直接把jar复制到这个目录下 ...
- poj3669 Meteor Shower(BFS)
题目链接:poj3669 Meteor Shower 我只想说这题WA了后去看讨论才发现的坑点,除了要注意原点外,流星范围题目给的是[0,300],到302的位置就绝对安全了... #include& ...
- Java 正则表达式 向前、向后匹配
//向后匹配 String a = "I paid $90 for 10 oranges, 12 pears and 8 apples. I saved $5 on "; Patt ...