最近需要开发Wireshark插件,分析一套协议,于是首先要解决的问题就是如何在windows环境下编译Wireshark,编译过程中也借鉴了一些网上的资料,但是基本都有问题,在经历无数次的失败之后的摸索,最终在Wireshark编译成功。
在编译过程中需要一下软件:Visual Studio,Python,Cygwin以及Wireshark源代码。
1. Visual Studio
我使用的是Visual Studio 2008版本,据网上说从VC6到VS2008都可以支持。根据本人经验,新版本的wireshark源码中包含的config.nmake中已经主持多编译器的编译,包括vs2010和vs2013,手边有什么编译器就可以用其编译。
2. Python
下载安装Python,据网上说从2.4 – 2.6应该都是可以的,并没有说明python2.7或2.8也可以,经过我的验证,我使用的2.7版本也可以进行使用。主要是在编译过程中会使用到Python。
3. Cygwin
去Cygwin官网上下载最新版本安装,然后开始安装,整个安装过程是在线安装,特别注意的是,以下库必须安装,否则绝对不能完成编译:
1. Archive <span>/</span> unzip
2. Devel <span>/</span> bison
3. Devel <span>/</span> flex
4. Interpreters <span>/</span> perl
5. Utils <span>/</span> patch
6. Web <span>/</span> wget
在安装Cygwin时,需要特别的注意,在在线下载所需要的包时,会让你选择一个临时文件存储的目录,如果你不是使用迅雷或者其他的第三方下载工具进行下载,请将该目录指定在自己特定的目录下,比如桌面上。楼主就是使用了猎豹默认的目录导致后面安装包时无法找到目录,浪费了很多时间。
4. 下载Wireshark源代码并编译
输入这个网址,http://www.wireshark.org/download/src/all-versions/,从上面下载Wireshark源代码,这里,值得一提的是,网上所有编译的Wireshark都是0.99.7版本的,其实这个版本是很有问题的。这里建议编译1.2.7版本,我是在1.2.7版本上面编译成功的。
下载完成之后,在Wireshark目录里面打开config.nmake,需要进行一些设置之后才可以开始编译。
1)、修改config.nmake,使用记事本或者UE打开config.nmake
查找:
(1)#MSVC_VARIANT=MSVC2008(楼主使用的是vs2008编译,读者可以根据自己的编译器进行选择MSVC2010或者其他)
去掉其前面的#,注意:只去掉#MSVC_VARIANT=MSVC2008中的#前面的两行别动。
(2)WIRESHARK_TARGET_PLATFORM=win32(楼主编译的是64位,因此此处将win32改为了win64)
(3)CYGWIN_PATH改为你自己Cygwin的安装目录,下图为楼主配置:
(4)PYTHON改为你自己python的安装目录,下图为楼主匹配:
保存。至此,我们完成了config.nmake的修改。
2)、编译前的准备
运行cmd命令行,注意使用管理员身份进行运行(不清楚如何使用管理员权限的请自行度娘),查找你编译器的安装目录中vsvars32.bat位置,默认安装一般为“C:\Program Files (x86)\Microsoft Visual Studio9.0\Common7\Tools”(楼主64位),将目录复制,在命令行中输入“cd C:\Program Files (x86)\Microsoft VisualStudio 9.0\Common7\Tools”回车,如:
直接vsvars32.bat拖入到命令行中回车,用命令行打开你config.nmake所在的wireshark源码文件,“cd C:\wireshark-1.12.7”(楼主文件),下图:
(1)验证安装工具
在该命令行中输入:nmake -f Makefile.nmake verify_tools,应该会产生一个错误,
不要慌张,该提示你尚未安装相应的库文件,接下来将进行下载,其他的显示应该正常,如下如:
(2)安装相应的路文件
注意:此时必须是联网的状态。在上图的命令行中继续输入:
nmake -f Makefile.nmake setup 回车
开始安装相应的库文件,系统将自行下载相应的库文件到C:\Wireshark-win32-libs-1.12或者C:\Wireshark-win64-libs-1.12中,下载的进度视网络环境。如下图:
完成安装后如图:
生成的文件如图:
(3)完成后进行第(1)步的验证,你会发现没有了一开始的ERROR
(4)清理源
在上图中的命令行中执行:nmake -f Makefile.nmake disclean系统将进行对源目录清理,清理中间生成的obj文件,为重新编译准备。
3)、编译wireshark
接上图中的命令行,执行:nmake -f Makefile.nmake all 编译时间比较长,如果编译成功,则如图所示:
你可以运行:C:\Wireshark-win32-libs-1.12\gtk2\bin\wireshark检查是否编译正确