天天看點

在嵌入式裝置上移植tcpdump功能1. 下載下傳libpcap源碼和tcpdump源碼2. 解壓源碼3. 配置、編譯、安裝libpcap4. 配置、編譯、安裝tcpdump5. 運作

最近研究了下如何在嵌入式裝置上移植tcpdump的功能,tcpdump是一款款用來截取網絡資料的工具,在嵌入式系統中常用來抓取和分析網絡資料包。在這裡我們着重講下如何在嵌入式的系統中使用tcpdump。

1. 下載下傳libpcap源碼和tcpdump源碼

可能有人會問,為什麼要下載下傳libpcap源碼呢?我隻是安裝個tcpdump,不想安裝libpcap啊。但其實你在安裝tcpdump時就會發現,tcpdump的編譯過程是基于libpcap提供的庫檔案進行操作的,這點也可以在tcpdump的configure檔案中找到說明。

在嵌入式裝置上移植tcpdump功能1. 下載下傳libpcap源碼和tcpdump源碼2. 解壓源碼3. 配置、編譯、安裝libpcap4. 配置、編譯、安裝tcpdump5. 運作

下載下傳源碼的連結位址:http://www.tcpdump.org/,這裡我下載下傳的版本是libpcap-libpcap-1.4.zip和tcpdump-tcpdump-4.4.0.zip。後面的操作都是基于這兩個版本進行的。(注意:可能不同的版本操作方法可能有些不同,但主要流程是一樣的)

2. 解壓源碼

将下載下傳的源碼解壓到同一個目錄下,這裡我使用的目錄是~/tcpdump/package/。使用解壓指令:

unzip  libpcap-libpcap-1.4.zip
unzip  tcpdump-tcpdump-4.4.0.zip
           

3. 配置、編譯、安裝libpcap

由于libpcap和tcpdump的源碼編譯所需要的Makefile檔案是由confirgure配置而自動生成的,是以需要先對源碼進行配置,生成Makefile檔案。

  • 配置libpcap源碼指令
./configure --prefix=/home/linux/tcpdump/tools --host=arm-xilinx-linux-gnueabi --target=arm-xilinx-linux-gnueabi CC=arm-xilinx-linux-gnueabi-gcc --with-pcap=linux
           
  • 編譯libpcap
make
           
  • 安裝libpcap
make install
           

編譯成功後會在~/tcpdump/tools目錄下生成三個個檔案夾bin, include和lib;裡面包含了libpcap的頭檔案, 庫及配置資訊。如果編譯時提示arm-xilinx-linux-gnueabi-gcc不存在,那就修改下開發環境中的/etc/profile中的最後一行增加下你的交叉編譯工具鍊的絕對路徑:export PATH=$PATH:/work/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin

4. 配置、編譯、安裝tcpdump

  • 配置tcpdump源碼指令
./configure --prefix=/home/linux/tcpdump/tools --host=arm-xilinx-linux-gnueabi --target=arm-xilinx-linux-gnueabi CC=arm-xilinx-linux-gnueabi-gcc ac_cv_linux_vers=2
           
  • 編譯libpcap
make
           
  • 安裝libpcap
make install
           

編譯完成後會在~/tcpdump/tools/sbin目錄下找到獨立的可執行檔案tcpdump

這裡需要說明的是CC參數指定了交叉編譯器, 編譯兩者時需要指定相同的目錄, 否則在編譯tcpdump時需要指定libpcap的路徑。

注意:tcpdump的源碼必須要與libpcap源碼放在同一個目錄下,因為在配置tcpdump時,在configure檔案中會檢查libpcap檔案,是以必須放在同一個目錄下,而且檔案名也是有要求的,必須是libpcap-xxx。如果libpcap檔案夾的名稱不是libpcap-xxx類型,就會報如下錯誤。在tcpdump檔案的configure中,可以看到對檔案名稱的限制。

在嵌入式裝置上移植tcpdump功能1. 下載下傳libpcap源碼和tcpdump源碼2. 解壓源碼3. 配置、編譯、安裝libpcap4. 配置、編譯、安裝tcpdump5. 運作
在嵌入式裝置上移植tcpdump功能1. 下載下傳libpcap源碼和tcpdump源碼2. 解壓源碼3. 配置、編譯、安裝libpcap4. 配置、編譯、安裝tcpdump5. 運作

5. 運作

将編譯好的tcpdump可執行檔案下載下傳到闆卡上,可以直接利用tcpdump來抓取網絡端口的資料包了。如果覺得編譯出來的可執行檔案較大,可以利用arm-xilinx-linux-gnueabi-strip tcpdump來進行瘦身。

繼續閱讀