winxp下实战编译wireshark0.99.7源代码

// 所有原创文章转载请注明作者及链接
//
blackboycpp(AT)gmail.com
// QQ群: 135202158

 


    经过N次的失败,我终于在Winxp sp2下成功编译了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". 下面还显示了编译时的库和其他一些信息.
 
  编译成功了, 这只是万里长征走完了第一步. 接下来该看源代码了, 希望与各位朋友交流! 

你可能感兴趣的:(winxp下实战编译wireshark0.99.7源代码)