一.编译环境搭建


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)创建一个空工程




WINDOWS luarocks 环境变量配置_makefile



(2)修改工程属性


修改其为自定义Make工程,填写Makefile文件并且设置nmake执行目录。



WINDOWS luarocks 环境变量配置_microsoft_02



2.2.2 编译工具的设定


wireshark采用2005编译器库,在CodeBlock Settings->Compiler and Debugger下设置编译器为"Microsoft Viual C++ 2005/2008";


右击工程选择build options->Make commands;对Make命令进行设置:


WINDOWS luarocks 环境变量配置_security_03



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"如下图所示:

WINDOWS luarocks 环境变量配置_python_04


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所在的目录。



最后来一个成功后的全景图:


WINDOWS luarocks 环境变量配置_path_05