前言
執(zhí)行sudo tcpdump肛度,若報(bào)錯(cuò)找不到libpcap.so.1,error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
萨醒,則執(zhí)行whereis libpcap.so.1
- 若顯示
libpcap.so: /usr/local/lib/libpcap.so /usr/local/lib/libpcap.so.1
,則說(shuō)明文件存在但執(zhí)行時(shí)獲取不到路徑:- 我們做一個(gè)符號(hào)鏈接到/usr/lib/下即可,鏈接代碼sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1降盹;
- 或者以管理員權(quán)限打開(kāi)編輯 /etc/ld.so.conf 文件, 末尾新一行追加
/usr/local/lib/
, /usr/local/lib/ 為 libpcap.so.1.1.1 所在目錄, 保存退出措嵌,然后以管理員權(quán)限執(zhí)行 ldconfig 命令
- 若顯示
libpcap.so:
躲叼,則說(shuō)明缺少pcap庫(kù),需要安裝libpcap庫(kù)才可執(zhí)行tcpdump企巢。
libpcap庫(kù)的安裝
1. 安裝
- 執(zhí)行以下語(yǔ)句安裝:
sudo yum install flex
sudo yum install bison
下載libpcap枫慷,連接,選擇
libpcap-1.5.3.tar.gz
解壓文件
tar -zxvf libpcap-1.3.0.tar.gz
進(jìn)入解壓文件
cd libpcap-1.3.0
浪规,執(zhí)行以下命令
./configure
make
make install
==執(zhí)行每一步注意報(bào)錯(cuò)==:
- error:Your operating system's lex is insufficient to compile libpcap.意思就是你的操作系統(tǒng)的詞法分析器(lex)不足以編譯libpcap,是需要安裝一個(gè)flex或听,sudo yum install flex回車(chē)
- yacc: 命令未找到。yacc(Yet Another Compiler Compiler)是unix/linux上用來(lái)生成編譯器的編譯器(編譯器代碼生成器)笋婿。yacc生成的編譯器使用C語(yǔ)言寫(xiě)成的語(yǔ)法解析器(Parser)誉裆,需要與詞法分析器lex一起使用,再把兩部分產(chǎn)生出來(lái)的C程序一并編譯缸濒。解決這個(gè)問(wèn)題的辦法是:安裝bison足丢,sudo yum install bison。
- 如果以上執(zhí)行過(guò)程都沒(méi)有報(bào)錯(cuò)庇配,但之后的檢驗(yàn)無(wú)法編譯測(cè)試代碼斩跌,需要make clean之后重新執(zhí)行以上三步。
2. 檢驗(yàn)
編寫(xiě)測(cè)試代碼test.c
#include <stdio.h>
#include <pcap.h>
int main(int argc,char *argv[]){
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev=pcap_lookupdev(errbuf);
if(dev==NULL){
fprintf(stderr,"couldn't find default device: %s\n",errbuf);
return(2);
}
printf("Device: %s\n",dev);
return(0);
}
執(zhí)行gcc -o device test.c -lpcap
若報(bào)錯(cuò)undefined reference to 'pcap_lex' collect2: ld returned 1 exit status
返回【libpcap安裝】步驟中檢查是否是flex沒(méi)有安裝捞慌。
tcpdump的安裝
執(zhí)行安裝sudo yum install tcpdump
執(zhí)行tcpdump耀鸦,若報(bào)錯(cuò)/usr/local/lib/libpcap.so.1: undefined symbol: pcap_lex
,說(shuō)明pcap庫(kù)的安裝有問(wèn)題啸澡,返回【libpcap的安裝】進(jìn)行排查袖订。