版本为 openssl-0.9.8x 源码,因为这个库极为庞大复杂,要具体去了解它,单步调试查看是必不可少的。
源码在手,却不能和之前的一些项目样,直接将源码放入到VS IDE环境进行编译,毕竟这不是土生土长的微软的东西。
现在需要在VS 2008进行单步查看和调试,因此需要对openssl进行DEBUG版的编译,网上很多的教程都是编译的Release版本,要编译DEBUG,需要小小的做些改动。
编译步骤:
准备工作,需要有Perl环境以及openssl源码。
1. 先执行VS的CMD命令行,然后进入对应的源码目录,执行 perl configure VC-WIN32
2. ms\do_ms.bat (如果是想修改成DEBUG版,安装下面步骤可进行修改,否则直接执行即可)
在openssl-0.9.8x找到 ms\do_ms.bat 进行编辑(或者新建一个do_ms_debug.bat文件也可),将ntdll.mak 和 nt.mak 所在行加入 debug 即可。 这个版本的ntdll.mak 和 nt.mak都不用改动,即使改动后,在执行 ms\do_ms.bat都会被重新建立mak文件。
修改前如图:
修改后如图:
进入到 openssl-0.9.8x 根目录,然后执行 ms\do_ms.bat ,会产生对应的nt.mak 和 ntdll.mak ,如果是使用静态库,就编译nt.mak ,动态库是 ntdll.mak。
编译方式是 nmake -f ms\ntdll.mak or nmake -f ms\nt.mak
测试库是 nmake -f ms\ntdll.mak test or nmake -f ms\nt.mak test
安装库文件是 nmake -f ms\ntdll.mak install or nmake -f ms\nt.mak install (这个步骤一般不用执行,执行后会在源码所在目录的根路径下新建 E:\usr\local\ssl\ 目录,然后库,头文件都被复制到这里) 如:
清除编译 nmake -f ms\ntdll.mak clean or nmake -f ms\nt.mak clean
修改do_ms.bat为debug版后,所对应的nt.mak 或者是 ntdll.mak 发生的改变仅仅是一些 CFLAG ,LFLAGS参数,如CFLAG = /MTd /Od -DDEBUG -D_DEBUG 。。。
LFLAGS = 。。。 /debug
借鉴于网上的一篇教程,也是单步调试设置的,但我做实验时貌似有些出入,按照其手动修改 nt.mak 和 ntdll.mak 新加入 /Zi ,貌似是没有作用的,因为该文件在执行do_ms.bat后,会被重写。 文章地址为: 点击打开链接
当编译完成后,会在根目录下生成 对应的,如 out32dll out32dll.dbg out32.dbg out32等目录,前两个是动态链接库,后者则是静态库。
3. 打开VS环境,设置一下VC++目录,“工具” -- “选项” -- “项目和解决方案” -- “VC++ 目录”,选择“包含文件”,指定 openssl-0.9.8x的include。“库文件”则指向生成的out32.dbg或者是out32.dll之类的都行,但如果是想跟踪源码,则应该使用out32.dbg。
4. 建立测试项目,如命令行程序,在文件中加入 头文件,库等就可以进入源码调试了,如:
至此,编译及单步调试都已经实现。
如果不是想进行单步调试,则可简单使用已经编译好的openssl库即可,如: Win32OpenSSL-0_9_8x.exe,执行完后就能使用。
参考: 在Windows下编译OpenSSL(VS2005)