Winxp下对wireshark-0.99.7编译 由于网络速度极不稳定, 用到的所有文件和工具都是手工下载的(Cygwin, wireshark编译所需库等), 有宽带上网条件的朋友可以参考官方的Developer Guide文档进行. 1. 安装C编译器 开发文档说可以使用多个C编译器,包括Visual Studio 6.0, Visual Studio .NET, Visual Studio 2003, Visual Studio 2005等中的C编译器, 以及Visual C++ 2005 Express Edition 等等. 而wireshark 0.99.7的关于对话框显示 "Built using Microsoft Visual C++ 6.0 build 8804" 可见官方是用Visual C++ 6.0编译的,所以我也选择用VC6.0编译.需要注意的是它用的VC6.0 版本为8804, 而我用的是8168, 也正常编译了. 安装好VC6.0之后,请打开"你的VC安装目录/Common/MSDev98/Bin/"目录, 将其中的VCVARS32.BAT 文件拷贝到一个方便的地方, 如C盘根目录下, 并改一下好输入的名字,如"v.bat"这是为了 以后用cmd.exe时方便. 以下几步默认会用此设置. 2. 安装Cygwin. Cygwin简介: "Cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司 开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。 它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊 的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。" 到 http://coolersky.com/download. 在里面找 Cygwin 2.510.2.2本地安装包 并下载. 注意: 此ISO文件有668MB. 下载完成后, 用虚拟光驱工具载入镜像, 运行setup.exe, 并选择安装以下几个编译Wireshark 所必需, 但默认又不安装的包 (分类/具体的包): • Archive / unzip • Devel / bison • Devel / flex • Interpreters / perl • Utils / patch • Web / wget 选择方法: 展开后点击skip,使其变为版本号即可. 请注意, 安装到默认的C:\cygwin目录. 3. 安装Python 2.4 到 http://python.org/download/ 下载并安装用于Win32的Python 2.4版本. 开发文档好象说 2.5版本有些问题什么的, 用2.4保险. 注意: 请安装到默认的 C:\Python24 目录. 4. 准备源代码并修改config.nmake文件 到wireshark官方网站下载wireshark源代码文件压缩包wireshark-0.99.7.tar.gz, 将其解压到 C:\wireshark. 在C:\wireshark目录中找到config.nmake文件, 用Ultra Edit或者写字板打开, 你可能需要 修改以下设置: 找到VERSION_EXTRA, 加入自定义版本号, 如"-myversion". 找到WIRESHARK_LIBS, 设置编译wireshark所需的库所在的目录, 默认即可. 找到PROGRAM_FILES, 设置本机程序安装目录, 默认即可. 找到MSVC_VARIANT, 只将值为MSVC6的那一行前的#去掉, 其余MSVC_VARIANT项行首全部加上#注释掉. 找到GTK1_DIR, GTK2_DIR, 如果只想生成好看的GTK2 GUI的程序, 用#注释掉GTK1_DIR行. 找到CYGWIN_PATH, 将其设置为Cygwin的bin目录. 找到PYTHON及其后的PATH, 将其修改为本机python.exe和其安装目录的位置. 找到MAKENSIS, 如果你没有安装NSIS安装程序制作工具, 用#注释掉此行. 找到HHC_DIR, 如果没有安装HTML Help Workshop(chm帮助文件制作工具), 注释掉此行. 找到INSTALL1_DIR, 如果不想生成GTK1程序, 用#注释掉此行. 找到HHC_EXE, 如果没有安装HTML Help Workshop(chm帮助文件制作工具), 注释掉此行. 修改完毕后, 保存修改后的config.nmake并将一份副本保存于安全的地方, 以备用. 5. 准备编译所需的库 到 http://anonsvn.wireshark.org/wireshark-win32-libs/trunk/packages/ 下载在Win32下 编译wireshark所需要的所部库. 当然有条件的可以按昭开发文档说的自动下载这些库了. 把这些库保存到 C:\wireshark-win32-libs 目录. 注意: (1) 下载后的zip文件有些在文件夹中,如gtk, gtk-wimp, 要把这些文件夹中的文件 全部移到C:\wireshark-win32-libs根目录下. (2) 下载后的zip文件保持原样放在C:\wireshark-win32-libs目录下即可, 不要解压缩!!! (3) 下载的库有的可能会和编译特定版本wireshark需要的相应库的版本不一致, 如 编译0.99.7版本需要gib-2.14.3,而我从 http://anonsvn.wireshark.org/wireshark-win32-libs/trunk/packages/ 下载的版本为glib-2.14.4, 此时需要重新下载所要求的版本2.14.3, 简单地把 glib-2.14.4.zip改名为glib-2.14.3是不行的, 虽然编译可以通过, 但生成的 wireshark.exe在运行时会报错, 无法运行!!! (4) 当在后面的安装编译支持库一步出错时, 请参考出错信息, 并下载安装所需的库. 6. 开始编译 (1) 运行cmd.exe (2) 将当前目录设置为C:\ (如: cd ../..) (3) 运行v.bat (v.bat即上面提到的vcvars32.bat) (4) 进入目录 C:\wireshark (cd wireshark) (5) 输入 nmake -f Makefile.nmake verify_tools 以检测编译所需的工具. 如果成功, 显示像下面这样: ___________________________________________________________________ C:\wireshark>nmake -f Makefile.nmake verify_tools Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. Checking for required applications: cl: /cygdrive/e/dev/vc6/VC98/BIN/cl link: /cygdrive/e/dev/vc6/VC98/BIN/link nmake: /cygdrive/e/dev/vc6/VC98/BIN/nmake bash: /usr/bin/bash bison: /usr/bin/bison flex: /usr/bin/flex env: /usr/bin/env grep: /usr/bin/grep /usr/bin/find: /usr/bin/find perl: /usr/bin/perl C:/python24/python.exe: /cygdrive/c/python24/python.exe sed: /usr/bin/sed unzip: /usr/bin/unzip wget: /usr/bin/wget ___________________________________________________________________ (6) 输入 nmake -f Makefile.nmake setup 来安装编译所需的库. 如果失败, 请依提示去下载正确的库. (7) 输入 nmake -f Makefile.nmake distclean 来清除源代码中用于在其他平台下编译的文件. (8) 输入 nmake -f Makefile.nmake all 来编译wireshark!!! 我用的机器配置为 P4 3.2GHz CPU, 1G RAM, 应该不算很低了, 但编译wireshark 还是花了似乎有20分钟的时间. 注意: 如果在编译过程中命令行窗口停滞不动, 而没有回到 C:\wireshark, 不要关掉它!!! 因为此时编译程序正在进行大量的操作,如果真有什么错误 编译完后会告诉你的, 别以为你机器死机了. 7. 运行编译后的程序 打开 C:\wireshark\wireshark-gtk2 目录, 运行其中的wireshark.exe. 怎么样?看到 熟悉的界面了吗? 如果是, 祝贺你编译成功!! 马上捕获一个包试试吧! 打开Help菜单,查看wireshark选项卡, 看看在版本号那里显示的是不是你自己定义的版本? 如"Version 0.99.7-myversion". 下面还显示了编译时的库和其他一些信息.