1. 程式人生 > >Ubuntu 自己編譯安裝wireshark遇到的問題和解決方法

Ubuntu 自己編譯安裝wireshark遇到的問題和解決方法

如果僅僅是使用wireshark,我們可以在軟體中心直接安裝,不必這麼麻煩。我在這裡主要是因為要編寫外掛所以要下載原始碼自己編譯安裝。

所有安裝包網址:https://www.wireshark.org/download/win64/all-versions/

安裝方法:

1.從wireshark站點https://www.wireshark.org/download/src/all-versions/下載原始碼並解壓(例如 wireshark-1.6.5.tar.bz2).

2.進入原始碼的目錄,執行configure命令進行編譯: ./configure

3.執行make命令進行編譯: make

4.如果需要安裝,則執行下述命令:sudo  make install

以下是執行./configure命令時遇到的問題。

1.configure: error: I couldn't find yacc (or bison or ...); make sure it's installed and in your path 

    sudo apt-get install flex bison  

yacc(Yet Another Compiler Compiler),是Unix/Linux上一個用來生成編譯器的編譯器(編譯器程式碼生成器)。

2.configure: error: Qt is not available

sudo apt-get install qt5-default

3.Could not run GTK+ test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GTK+ is incorrectly installed.
configure: error: GTK+ 3 is not available

sudo apt-get install libgtk-3-dev

4. configure: error: Header file pcap.h not found; if you installed libpcap from source, did you also do "make install-incl", and if you installed a binary package of libpcap, is there also a developer's package of libpcap,  
    and did you also install that package?  
問題原因是ubuntu下缺少pcap.h等檔案。
解決方法:
編譯安裝libpcap.
在www.tcpdump.org頁面中可下載原始碼:libpcap-1.0.0.tar.gz
cd到檔案目錄:
    $tar -xvf libpcap-1.0.0.tar.gz  
    $cd libpcap-1.0.0.tar.gz  
    $./configure  
    $make  
    $sudo make install  
5.'aclocal-1.14' is missing on your system. 
You should only need it if you modified 'acinclude.m4' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'aclocal' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
用軟體中心安裝Synaptic Package Manager,然後在安裝autotools-dev  autoconf2.13,這樣就可以make通過了。
在修改了原始碼主目錄下的configure檔案,然後再執行./configure命令。這樣就會再外掛原始碼目錄生成Makefile檔案。最後進入外掛原始碼目錄之賜你個命令make,就會在當前目錄的.libs下生成外掛動態庫檔案。

注意:在wireshark的文件中的readme.plugins檔案中有講怎麼編譯設定。

注意編譯動態庫的時候是在自己的目錄下make。
在make的時候先要把此資料夾下的makefile和makefile.in修改正確。我的做法是將拷自別的資料夾下的makefile和makefile.in的關鍵字替換為自己資料夾 的關鍵字,然後再make。
這時又提示/bin/bash: @[email protected]: command not found。
解決辦法:apt-get install libtool,這樣不能解決問題。
最後發現可以強行指定

 make LIBTOOL=libtool , make install LIBTOOL=libtool

注意等號兩邊都沒有空格。

這樣就可以解決這個問題了。
這時候又發現Makefile:862: .deps/packet-scoreboard.Plo: No such file or directory
我又將關鍵字scoreboard改回為原來的gryphon,這樣最終進入到了真正的編譯環節。

這樣就會在當前目錄下生成相應的scoreboard.la檔案,並在.libs資料夾下生成scoreboard.so。這個.libs資料夾在正常的資料夾檢視下看不到,在父目錄中執行ls命令也看不到。但是可以cd ./libs。

這個是用軟體中心自動安裝時的wireshark安裝目錄的外掛目錄:/usr/lib/i386-linux-gnu/wireshark/libwireshark3/plugins/

當我們自己編譯時wireshark的外掛目錄是:/usr/local/lib/wireshark/plugins/1.12.2,往這個目錄考的時候把.la和.so檔案都拷過去。這樣我們的模組才會被呼叫。

通過命令wireshark /home/chenyang/wireshark_cap/qq.pcapng可以啟動wireshark分析一個檔案。