一.编译环境搭建
1.1 下载安装 Cygwin
下载地址:http://www.cygwin.com/setup.exe
介绍:Cygwin提供了基于Win32的unix工具集。
安装cygwin时候,在”SelectPackages”页面时候,选择如下几个包:
Archive/unzip
Devel/bison
Devel/flex
Interpreters/perl
Utils/patch
Web/wget
设置cygwin环境变量(Path : D:\cygwin\bin)
1.2 下载安装Python
下载地址: http://python.org/download/ (本人使用版本2.7)
介绍:使用Python方便用户对Wireshark进行扩展,本人没使用Python扩展过;除此之外,Wireshark支持使用LUA对其解析器进行扩展。
官网推荐安装到python安装默认C盘
1.3 下载WireShark , 配置WireShark
下载地址:http://www.wireshark.org/download.html(本人采用版本1.4.6)
配置WireShark目录的config.nmake文件:
(1)WIRESHARK_LIBS, 设置编译WireShark所需的库所在的目录,默认即可。
(2)PROGRAM_FILES,设置本机程序安装目录,默认即可。
(3)MSVC_VARIANT,因为我使用VS2005编译,所以这里将值为MSVC2005的那一行前的#去掉,其余MSVC_VARIANT项行首全部加上#注释掉。
(4)CYGWIN_PATH,将其设置为Cygwin的bin目录,例如D:\Cygwin\bin。
(5)PYTHON及其后的PATH,将其修改为本机python.exe和其安装目录的位置,例如C:\Python27\Python.exe。(也可采用默认)
1.4 编译WireShark (需要WinPcap4.1.2)
(1)cmd下 运行"d:\Program Files\Microsoft Visual Studio8\VC\bin\vcvars32.bat" (设置vc工作集环境变量)
(2)切换到WireShark目录,执行命令坚持工具是否齐全:
nmake -f Makefile.nmake verify_tools
可能会出现 MT.相关的错误,解决方法,添加环境变量PATH:
D:\ProgramFiles\Microsoft Visual Studio 8\VC\bin
(3) 下载编译所需依赖库,命令如下:
nmake -fMakefile.nmake setup
(4) 编译WireShark命令如下:
nmake -fMakefile.nmake all
可通过查看wireshark-gtk2目录下WireShark.exe运行是否成功;
如编译有问题,检查config.nmake配置文件的相应配置
二.开发环境
2.1 VS2005的开发调试环境搭建
幸运的是Wireshark 1.6.5版本以上已经为用户建立了VS2005工程;如果开发者使用Wireshark1.4.6版本以下,不妨采用下面的方法:
(1) Config.nmake中 LOCAL_LDFLAGS=/DEBUG (一般默认就可以)
(2) 在Visual Studio 2005中加载一个可用的二进制程序(一般为 wireshark-gtk2目录下的wireshark.exe);
文件->打开->项目 选择wireshark-gtk2/wireshark.exe文件;
打开所需要调试的源文件,在需要的地方设置断点,按F5进行调试。
2.2 CodeBlock的开发调试环境搭建
有两个优点:
(1)编译与调试集成统一在同一个IDE下;
(2)只有一个工程配置文件,方便移动;
(3)如果采用Linux下堆Wireshark进行开发可以更加熟悉方便(毕竟CodeBlock ,Windows和Linux通吃)。
2.2.1 工程的创建与配置
(1)创建一个空工程
(2)修改工程属性
修改其为自定义Make工程,填写Makefile文件并且设置nmake执行目录。
2.2.2 编译工具的设定
wireshark采用2005编译器库,在CodeBlock Settings->Compiler and Debugger下设置编译器为"Microsoft Viual C++ 2005/2008";
右击工程选择build options->Make commands;对Make命令进行设置:
2.2.2 编译关键问题解决
(1)LNK2001: 无法解析的外部符号 ___security_cookie,编译问题
在命令行下编译Wireshark之前先要设置VC工作环境变量:"c:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
但是在CodeBlock如何在编译前设置呢?
本人在build options->Pre-Build steps中填写命令"c:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat";
应该OK了?
非常糟糕,没有任何效果,编译居然出现错误:LNK2001: 无法解析的外部符号 ___security_cookie;
(2)解决方法
google了不少资料,在CodeBlock下没有找到很好的解决方法;最后还是在 神地StackOverFlow找到一个冷清的帖子,给出了一种解决方法,是针对cl.exe;
本人根据其思想提出了解决思路:
编写nmake.bat,使其在执行nmake之前执行vcvars32.bat;
call vcvars32.bat
call nmake.exe %*
并且修改"Make Program"如下图所示:
Bingo!
2.2.3 调试
(1)添加源代码文件
在右击工程中有"add files recursively"
(2)调试问题
对编译成功后也许认为可以进行调试了,no!
在上面的图中“Debugger”选择了cdb.exe可是翻遍所有的目录都没有找到,原来vs将调试功能集成到集成开发环境中。
可以自己下载SDK包,其中含有调试器cdb.exe;
本人下载的是win8的(也支持win7): http://msdn.microsoft.com/en-us/windows/hardware/hh852363
然后在Additional Paths中添加cdb.exe所在的目录。
最后来一个成功后的全景图: