配置ethereal编译环境
因为工作需要要分析公司自己开发的协议软件,需要抓包分析,因而接触到ethereal插件开发,运行平台是windows。网上查了很多资料,结合自己开发的实践,写下这份文档,希望对其他人有用。
在windows平台下开发,用Cygwin + VC6.
首先介绍Cygwin的安装步骤。我下载的是一个Cygwin的ISO镜像文件,可以用虚拟光驱打开,点击Setup,点下一步,选择Install from local Directory,点下一步
选择安装在C:\cygwin下,后下一步,选择cygwin的源目录,如图:
下一步,点击列表中 ALL Default,如图,
使其变为ALL Install,也可以选择自己想要的包。
点击下一步就开始安装。
安装到%99时候可能要等很长时间,(如果长时间在%99没有完成,可点取消完成安装,我是这样做的,也没出现什么问题)。
安装完成后,把C:\cygwin\bin 添加到系统的环境变量中PATH中。
下面讲VC6的环境变量的设置。
个人根据安装的VC6的路径不同进行修改,如果在安装VC6时已经注册了环境变量下面的步骤就不需要了。
默认情况下环境变量中没有Include变量,需要新建Include变量然后添加如下变量值
C:\Program Files\Microsoft Visual Studio\VC98\ATL\Include;
C:\Program Files\Microsoft Visual Studio\VC98\Include;
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include;
默认情况下环境变量中没有Lib变量,需要新建Lib变量添加如下变量值
C:\Program Files\Microsoft Visual Studio\VC98\Lib;
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib;
接下来把ethereal-win32-libs文件夹放在C盘根目录下。
这样整个编译环境就搭建好了,接下来测试已安装工具的有效性。
进入Windows控制台,先进入Ethereal源码所在目录,运行nmake -f Makefile.nmake verify_tools
正常情况下如图所示:
接下来编译ethereal,输入nmake -f makefile.nmake all
遇到了找不到unistd.h头文件的错误,解决办法自己新建一个unistd.h头文件,内容如下:
/** This file is part of the Mingw32 package.
* unistd.h maps (roughly) to io.h
*/
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
将其放到include的环境变量值所指的目录下,如C:\Program Files\Microsoft Visual Studio\VC98\Include;
编译成功之后会在源码文件夹中生成ethereal.exe文件,现在运行ethereal.exe会提示缺少wiretap-0.3.dll、 intl.dll等动态链接库。解决办法是在cmd下运行nmake -f makefile.nmake install-deps。将所需的dll拷到源码文件的根目录下。
环境搭好了,进行插件的开发,可以参考文件夹plugins下的各个例子。