基于VS2005、CodeBlock的Wireshark开发环境的搭建

一.编译环境搭建

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盘

设置python环境变量(Path: C:\Python27)

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。(也可采用默认)

(6)MSVCR_DLL,如果VS安装在D盘,请在这里相应的地方用绝对路径表示,而不要去修改前面的PROGRAM_FILES,否则会出现意想不到的错误。(也可采用默认)

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的开发调试环境搭建

可以使用CodeBlock建立make工程来管理Wireshark的编辑与调试。
有两个优点:
(1)编译与调试集成统一在同一个IDE下;
(2)只有一个工程配置文件,方便移动;
(3)如果采用Linux下堆Wireshark进行开发可以更加熟悉方便(毕竟CodeBlock ,Windows和Linux通吃)。

2.2.1 工程的创建与配置

(1)创建一个空工程
基于VS2005、CodeBlock的Wireshark开发环境的搭建_第1张图片
(2)修改工程属性
修改其为自定义Make工程,填写Makefile文件并且设置nmake执行目录。
基于VS2005、CodeBlock的Wireshark开发环境的搭建_第2张图片

2.2.2 编译工具的设定

wireshark采用2005编译器库,在CodeBlock Settings->Compiler and Debugger下设置编译器为"Microsoft Viual C++ 2005/2008";
右击工程选择build options->Make commands;对Make命令进行设置:
基于VS2005、CodeBlock的Wireshark开发环境的搭建_第3张图片

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"如下图所示:
基于VS2005、CodeBlock的Wireshark开发环境的搭建_第4张图片
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所在的目录。

最后来一个成功后的全景图:
基于VS2005、CodeBlock的Wireshark开发环境的搭建_第5张图片

你可能感兴趣的:(Wireshark)