嵌入式系統下TCPDUMP的移植
阿新 • • 發佈:2019-01-23
TcpDump的作用就不用多說了,顧名思義,TcpDump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的資訊。目前tcpdump工具主要在x86平臺上使用和移植,在嵌入式平臺下還是比較少。最近由於專案需要移植網絡卡驅動,然後參考了網上的文章在arm平臺下移植了tcpdump工具。
一、首先到tcpdump的開源網站http://www.tcpdump.org/下載工具的原始碼包,筆者此次下載了libpcap-1.0.0.tar.gz和tcpdump-4.0.0.tar.gz這兩個版本。
二、在/home/hlz目錄下建立編譯目錄tcpdumpsrc和安裝目錄tcpdumptools,把下載原始碼包解壓到此目錄下,例如:tar
-zxvf libpcap-1.0.0.tar.gz 和 tar
-zxvf tcpdump-4.0.0.tar.gz
三、首先編譯libpcap。
1、libpcap-1.0.0目錄下執行./configure
--prefix=/home/hlz/tcpdumptools --host=arm-linux --target=arm-linux CC=/your-cross-compile-tool-dir/bin/arm-linux-uclibc-gcc
注:如果該步驟提示錯誤,請到configure中註釋掉相應的檢查,應該不影響結果。
2、執行make ;make install,編譯完成之後,會在/home/hlz/tcpdumptools目錄下生成libpcap.a的庫。
四、編譯tcpdump工具
1、註釋掉configure檔案中的if
test $ac_cv_linux_vers = unknown(如果不註釋,執行configure的時候應該會提示錯誤)
2、./configure
--prefix=/home/hlz/tcpdumptools --host=arm-linux --target=arm-linux CC=/your-cross-compile-tool-dir/bin/arm-linux-uclibc-gcc
3、執行make,此步驟如果出現“error:
invalid 'asm': invalid operand for code 'w'”的錯誤,我的修改方式是修改生成的makefile,修改INCLS和DEFS和LDFLAGS和LIBS,把裡面的相關路徑都指定到你的交叉編譯路徑。
4、重新make
;make install
5、步驟四完成之後就會在/home/hlz/tcpdumptools/sbin/目錄下生成tcpdump工具