Posted on 2010-03-09 17:24
歲月流逝 閱讀(1025)
評論(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". 下面還顯示了編譯時的庫和其他一些信息.