windows下wireshark外掛程式開發之源碼編譯

來源:互聯網
上載者:User

閑來無事,想做個wireshark的協議解析外掛程式,可以解決一下自己工作中的自訂協議解析問題。

好了,廢話少說,開始幹活。

 

首先在網上查下資料。想在windows下開發外掛程式環境需求如下:

1  需要windows下的C/C++編譯環境。 嗯,我裝了VS2008,可以用。

2 安裝cygwin。

   去http://www.cygwin.cn/下載一個吧。下載下來的只是一個setup.exe。

   運行之後介面

  

   我先選的Download Without installing,先下載到本地,以備日後使用。^_^下載的時候,我是選擇了全部組件,下完之後有 1.25G。。。 下了一晚上啊(=.=!)

   第二次運行setup.exe選在Install From local directory.安裝時就不要全選了哈。

   安裝時有些組件是wireshark必須的,但是預設是不安裝的,注意更改安裝選項。

3 需要安裝python,cygwin內建也有,不過人家wireshark也說了, not recommend.

   我先裝了個3.1的,編譯時間總是提示找不到,最後還是裝了個2.6的python。

   配套的版本wireshark源碼的根目錄下 Makefile.nmake 中有寫。還是要按照配套的版本來啊。

環境準備完成後修改下Makefile.nmake檔案中的幾個參數,注意修改前備份~

具體過程可以參考:http://blog.csdn.net/hcj2002/archive/2008/04/06/2255637.aspx

 

我的環境:

cygwin安裝路徑:D:/cygwin  版本:cygwin1.7.1

wireshark源碼: D:/wireshark-1.3.2

VS2008安裝路徑:D:/Program Files/Microsoft Visual Studio 9.0

python2.6安裝路徑:D:/Python26

 

wirshark 編譯時間遇到如下問題。

 問題1:win-setup.sh 找不到。

d:/wireshark-1.3.2>nmake -f makefile.nmake verify_tools

Microsoft (R) 程式維護工具 + 生產力 9.00.21022.08 版
著作權 (C) Microsoft Corporation。著作權所有,並保留一切權利。

cygwin warning:
  MS-DOS style path detected: tools/win32-setup.sh
  Preferred POSIX equivalent is: tools/win32-setup.sh
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
tools/win32-setup.sh: line 12: exec: tools/win-setup.sh: not found
tools/win32-setup.sh: line 12: exec: tools/win-setup.sh: not found
NMAKE : fatal error U1077: “D:/cygwin/bin/bash.EXE”: 傳回碼“0x7f”
Stop.

d:/wireshark-1.3.2>

 

這個問題折騰了好久,後來發現是wireshark的bug =.=!

Wireshark Bug Database – Bug 4359  https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4359

是因為這個1.3.x版本在使用cygwin 1.5.x 到 1.7.x的版本,處理ms-dos風格的路徑有問題,囧。

規避方法是:

Changing the WIN_SETUP= line in the main Makefile.nmake file to use a POSIX
style forward slash path delimiter instead of using a Win32 style backslash
delimiter resolves the nmake problem:

e.g.

> -WIN_SETUP=tools/$(WIRESHARK_TARGET_PLATFORM)-setup.sh
> +WIN_SETUP=tools/$(WIRESHARK_TARGET_PLATFORM)-setup.sh
不過我在Makefile.nmake檔案中沒有找到WIN_SETUP=

我直接修改了原始碼tools/win32-setup.sh檔案中的WIN_SETUP=`echo $0 | sed -e s/win32/win/`改成WIN_SETUP=tools/win-setup.sh

問題2:提示/Microsoft.VC90.CRT/*.*的幾個檔案找不到。

編譯檔案到最後提示xcopy C:/Program files/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*  失敗,找不到檔案。

我的VS2008是裝在D盤的。

在Makefile.nmake搜了一下,找到這麼一行

MSVCR_DLL=$(PROGRAM_FILES)/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*

PROGRAM_FILES在Makefile.nmake中的定義是PROGRAM_FILES=$(PROGRAMFILES)

在cmd命令列中執行SET PRO發現結果如下:

d:/wireshark-1.3.2>SET PRO
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=170a
ProgramData=C:/ProgramData
ProgramFiles=C:/Program Files
PROMPT=$P$G

d:/wireshark-1.3.2>

 呃~ 這個一定是哪裡出錯了。。。

不管了,將Makefile.nmake檔案中的

MSVCR_DLL=$(PROGRAM_FILES)/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*

修改為

MSVCR_DLL=D:/Program files/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*

 

再執行 nmake -f makefile.nmake verify_tools,哈哈,成功了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.