tcpDump&libpcap库安装

前言

执行sudo tcpdump,若报错找不到libpcap.so.1,error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory,则执行whereis libpcap.so.1

  • 若显示libpcap.so: /usr/local/lib/libpcap.so /usr/local/lib/libpcap.so.1,则说明文件存在但执行时获取不到路径:
    • 我们做一个符号链接到/usr/lib/下即可,链接代码sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1
    • 或者以管理员权限打开编辑 /etc/ld.so.conf 文件, 末尾新一行追加/usr/local/lib/ , /usr/local/lib/ 为 libpcap.so.1.1.1 所在目录, 保存退出,然后以管理员权限执行 ldconfig 命令
  • 若显示libpcap.so:,则说明缺少pcap库,需要安装libpcap库才可执行tcpdump。

libpcap库的安装

1. 安装

  1. 执行以下语句安装:
sudo yum install flex
sudo yum install bison
  1. 下载libpcap,连接,选择libpcap-1.5.3.tar.gz

  2. 解压文件tar -zxvf libpcap-1.3.0.tar.gz

  3. 进入解压文件cd libpcap-1.3.0,执行以下命令

./configure
make
make install

==执行每一步注意报错==:

  • error:Your operating system's lex is insufficient to compile libpcap.意思就是你的操作系统的词法分析器(lex)不足以编译libpcap,是需要安装一个flex,sudo yum install flex回车
  • yacc: 命令未找到。yacc(Yet Another Compiler Compiler)是unix/linux上用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器使用C语言写成的语法解析器(Parser),需要与词法分析器lex一起使用,再把两部分产生出来的C程序一并编译。解决这个问题的办法是:安装bison,sudo yum install bison
  • 如果以上执行过程都没有报错,但之后的检验无法编译测试代码,需要make clean之后重新执行以上三步。

2. 检验

编写测试代码test.c

 #include 
#include 
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);
}

执行gcc -o device test.c -lpcap

若报错undefined reference to 'pcap_lex' collect2: ld returned 1 exit status

返回【libpcap安装】步骤中检查是否是flex没有安装。

tcpdump的安装

执行安装sudo yum install tcpdump

执行tcpdump,若报错/usr/local/lib/libpcap.so.1: undefined symbol: pcap_lex,说明pcap库的安装有问题,返回【libpcap的安装】进行排查。

你可能感兴趣的:(tcpDump&libpcap库安装)