用vs6编译openssl-1.0.0e
来源:互联网 发布:女生身高知乎 编辑:程序博客网 时间:2024/06/04 01:19
用vs6编译openssl-1.0.0e
一 openssl的获取
http://www.openssl.org/source/
目前最新版是openssl-1.0.0e
二 还需要一份ActivePerl
http://www.activestate.com/activeperl/downloads
三. 编译
openssl其实自带说明,可以打开INSTALL.xxx来看,比如 INSTALL.W32 就是win32平台下的安装说明,不过本文会相对详细些:)
1. 解压openssl-1.0.0e,比如C:\openssl-1.0.0e
2. 命令行依次执行
cd C:\openssl-1.0.0e
c:
nmake -f ms\nt.mak (如果要编译动态库则执行nmake -f ms\ntdll.mak)
3. 编译中可能遇到各种问题
a) ml.exe版本过高或者过低都是杯具
过低可能对路径的识别产生问题(看起来好像是不认空格路径之类)
过高会引发一个"debugging information corrupt; recompile module"的错误,然后如果去网上搜,千篇一律的告诉你三种解决方案,只用Release编译/修改SDK顺序/用一个微软已经不提供下载的SDK(Microsoft Platform SDK for Windows XP SP2)
但事实上,用Release编译,那以后用了这个库的程序就几乎不能debug了,link选项中不能用/debug(Generate debug info),否则也是这个编译错,这不是扯么= =,摆弄SDK让环境更加复杂化,实际上也不顶用
后面在这里找到了答案 http://blog.csdn.net/everandforever/article/details/6102781
------
下载Visual C++ 6.0 Processor Pack并解压(无须安装),将其中的ml.exe复制到VC6的bin目录下,例如D:\Microsoft Visual Studio\VC98\Bin。使用其它版本ml.exe会报错“LNK1103 debugging information corrupt”
-----
http://msdn.microsoft.com/en-us/vstudio/aa718349.aspx
b) NMAKE : fatal error U1077: 'cl' : return code '0x2'
禁用IPV6就好,perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0
见 http://rt.openssl.org/Ticket/Display.html?id=2097&user=guest&pass=guest
四. 使用
执行ms\do_ms后,打开nt.mak,会发现编译选项是 /MT /Zi /Fdxxx
1. 诚然nt.mak是编译出一个静态库,但若使用到的工程是/MD的,我们也需要工程设置保持统一,即改为/MD
2. /Zi 选项将导致生成pdb,然后使用到库的工程如果没这个pdb就会在编译debug版本的时候报无数warning告诉你找不到各种pdb。
参:http://msdn.microsoft.com/zh-cn/library/958x11bc(v=vs.80).aspx
可以选择直接删除掉(不生产调试信息),或者改成/Z7
两者的区别是,前者没有那些信息,生成的文件较小,编译较快,不过运行到库提供的接口的时候,没法进一步调试,后者会询问源代码的路径,视个人需要修改
一 openssl的获取
http://www.openssl.org/source/
目前最新版是openssl-1.0.0e
二 还需要一份ActivePerl
http://www.activestate.com/activeperl/downloads
三. 编译
openssl其实自带说明,可以打开INSTALL.xxx来看,比如 INSTALL.W32 就是win32平台下的安装说明,不过本文会相对详细些:)
1. 解压openssl-1.0.0e,比如C:\openssl-1.0.0e
2. 命令行依次执行
cd C:\openssl-1.0.0e
c:
perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0 --prefix=c:\openssl-1.0.0e
(如果要编译debug版本则:Perl Configure debug-VC-WIN32 -DOPENSSL_USE_IPV6=0 --prefix=c:\openssl-1.0.0e)
ms\do_msnmake -f ms\nt.mak (如果要编译动态库则执行nmake -f ms\ntdll.mak)
3. 编译中可能遇到各种问题
a) ml.exe版本过高或者过低都是杯具
过低可能对路径的识别产生问题(看起来好像是不认空格路径之类)
过高会引发一个"debugging information corrupt; recompile module"的错误,然后如果去网上搜,千篇一律的告诉你三种解决方案,只用Release编译/修改SDK顺序/用一个微软已经不提供下载的SDK(Microsoft Platform SDK for Windows XP SP2)
但事实上,用Release编译,那以后用了这个库的程序就几乎不能debug了,link选项中不能用/debug(Generate debug info),否则也是这个编译错,这不是扯么= =,摆弄SDK让环境更加复杂化,实际上也不顶用
后面在这里找到了答案 http://blog.csdn.net/everandforever/article/details/6102781
------
下载Visual C++ 6.0 Processor Pack并解压(无须安装),将其中的ml.exe复制到VC6的bin目录下,例如D:\Microsoft Visual Studio\VC98\Bin。使用其它版本ml.exe会报错“LNK1103 debugging information corrupt”
-----
http://msdn.microsoft.com/en-us/vstudio/aa718349.aspx
b) NMAKE : fatal error U1077: 'cl' : return code '0x2'
禁用IPV6就好,perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0
见 http://rt.openssl.org/Ticket/Display.html?id=2097&user=guest&pass=guest
四. 使用
执行ms\do_ms后,打开nt.mak,会发现编译选项是 /MT /Zi /Fdxxx
1. 诚然nt.mak是编译出一个静态库,但若使用到的工程是/MD的,我们也需要工程设置保持统一,即改为/MD
2. /Zi 选项将导致生成pdb,然后使用到库的工程如果没这个pdb就会在编译debug版本的时候报无数warning告诉你找不到各种pdb。
参:http://msdn.microsoft.com/zh-cn/library/958x11bc(v=vs.80).aspx
可以选择直接删除掉(不生产调试信息),或者改成/Z7
两者的区别是,前者没有那些信息,生成的文件较小,编译较快,不过运行到库提供的接口的时候,没法进一步调试,后者会询问源代码的路径,视个人需要修改
- 用vs6编译openssl-1.0.0e
- 交叉编译openssl-1.0.0e
- VS2010编译openssl-1.0.1e
- openssl 1.0.0编译
- 在Linux上编译安装OpenSSL-1.0.0e.tar.gz教程
- 编译openssl-1.0.0l
- 编译安装openssl-0.9.8e
- WinXP+VS6 源码编译FireFox
- 移植openssl-1.0.0e到mips平台
- 编译安装openssl-1.0.2e时遇到的问题的解决办法
- openssl-1.0.0 的VC编译记录
- openssl-1.0.0a 64位编译
- 交叉编译openssl-1.0.0 for arm
- Windows XP下编译openssl-1.0.0
- winxp下编译openssl-1.0.0g
- 交叉编译 openssl-1.0.0l
- VS 2013 编译 OpenSSL 1.0.0f
- openssl-1.0.1用mingw编译
- Log4j
- SQL1005N 数据库别名 "SAMPLE" 已存在于本地数据库目录或系统数据库目录中
- 上海好玩的地方!
- java的io
- The Web Developer's Toolkit
- 用vs6编译openssl-1.0.0e
- 思考在专业边缘
- 关于jquery ajax return的问题
- 造成内存位置访问无效的一个原因
- 下图为 TCP/IP 协议驱动程序 (Tcpip.sys) 及其用于在 Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1
- Log4j
- Sql server 2005在安装过程中所遇到的几个问题
- 字符串IP和数字转换的杂谈
- 基于单片机的文件系统实现