Posted on 2010-03-09 17:24
岁月流逝 阅读(1011)
评论(1) 编辑 收藏 引用
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". 下面还显示了编译时的库和其他一些信息.