在ubuntu下安装libpcap库

原创 2011年12月22日 17:28:11

这两天公司里要我了解一下pcap,但是还不知道它是干什么的。首先,我从网上查到了,pcap实际上是抓包库。这个抓包库给抓包系统提供了一个高层次的接口。所有网络上的数据包,甚至是那些发送给其他主机的,通过这种机制,都是可以捕获的。它也支持把捕获的数据包保存为本地文件和从本地文件读取信息。进一步了解到,在linux下的这个库是libpcap,libpcap是unix/linux平台下的网络数据包捕获函数包,并且大多数网络监控软件都以它为基础。在windows下对应的是winpcap库版本。

首先呢,需要先在一个最新的libpcap源文件。我下载的是最新的版本是libpcap-1.2.0,然后解压到用户目录下。

在linux系统下,安装只需要三步:1. ./configure;2. make;3. make install。

在按照这三部安装的过程中遇到了两个问题,是安装过程中出现的错误。这些错误是因为没有对应的工具。我把错误和解决办法罗列如下,和大家一起分享:

第一步,配置过程中出现这样的一个错误:./configure:error:Your operating system's lex is insufficient to compile libpcap.意思就是你的操作系统的词法分析器(lex)不足以编译libpcap。有关这个lex的详细资料大家可以百度一下。然后我查阅了资料,解决办法是需要安装一个flex,sudo apt-get install flex回车。安装这个后就可以通过了,生成Makefile文件以及其他配置文件。

第二步,make编译过程中也遇到了一个错误:make:yacc: 命令未找到。yacc(Yet Another Compiler Compiler)是unix/linux上用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器使用C语言写成的语法解析器(Parser),需要与词法分析器lex一起使用,再把两部分产生出来的C程序一并编译。解决这个问题的办法是:安装bison,关于bison的详细资料,这儿不啰嗦了。sudo apt-get install bison。还要注意一个问题,在编译的时候可能有一些文件有权限要求,所以最好使用sudo make命令。

第三步,make install 安装。这一步倒没出现问题。不过也最好使用sudo make install 吧。

接下来就是使用这个libpcap库了。

 

在安装成功后,接下来在使用该库编译或者执行编译之后的可执行文件时,或许还会遇到如下的问题:

1. 编译时:比如,

gcc  packet.o  -lpcap -lpthread  /* -lpcap是用于调用libpcap库的,所以不要忘了添加上。*/
/usr/local/lib/libpcap.so: undefined reference to `pcap_parse’
collect2: ld returned 1 exit status

对于这样的错误信息,首先确认一下是否安装了libpcap-dev,如果没有可以先安装一下:sudo apt-get install libpcap-dev;我尝试了一下安装这个以后问题并没有解决,但是我不确定下面的方法是不是和这一步有关系,我是先尝试这个方案,最后不行。

然后下面的解决的办法确实让人很难想到:重新安装libpcap库。进入解压后的库目录里,首先make clean,然后再从新安装一遍:1. ./configure;2. make;3. make install;问题就解决了。这个解决方法很难让我们想到,具体是什么原因,还待研究。

2. 执行时:比如,

编译通过后生成可执行文件:a.out,然后再终端里执行:sudo ./a.out,出现如下错误信息:

error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory

解决办法是:将/usr/lib/libpcap.so库文件改一下名字,改成libpcap.so.1就可以了。当然也可以为libpcap.so.1建一个软连接:ln  -s /usr/lib/libpcap.so  /usr/lib/libpcap.so.1;这样问题就解决了。


Libpcap的安装及使用

http://www.cnblogs.com/coder2012/archive/2013/04/13/3012390.html 1.Libpcap简介   Libpcap是Packe...
  • achejq
  • achejq
  • 2017年02月10日 13:43
  • 1406

apt-get install libpcap-dev

apt-get install libpcap-dev
  • LJL1603
  • LJL1603
  • 2010年01月16日 01:22
  • 1314

Linux下libpcap的安装与使用

1, 环境: Ubuntu10.04 + libpcap-1.4.0.tar.gz 2,Libpcap下载: 官方地址-http://www.tcpdump.org/#latest-release ...
  • yyingwei
  • yyingwei
  • 2013年05月21日 14:25
  • 42608

libpcap的使用一(pcap_lookupdev函数的使用)

首先要在Linux环境下安装libpcap.
  • xumesang
  • xumesang
  • 2015年03月09日 20:54
  • 3333

ubuntu 14.04安装libpcap

1, 环境: Ubuntu14.04 + libpcap-1.4.0.tar.gz 2,Libpcap下载: 官方地址-http://www.tcpdump.org/#latest-release ...
  • loveRooney
  • loveRooney
  • 2014年08月13日 21:56
  • 8116

Ubuntu下libpcap安装步骤

第一步,先安装GCC ,一般都会自动安装 sudo apt-get install build-essential 第二步,GNU M4可以从此处 ftp.gnu.org/gnu/m4/ 下载 ...
  • u011573853
  • u011573853
  • 2015年11月19日 00:09
  • 1798

Ubuntu16.04安装libpcap开发库对pcap文件中的数据包进行过滤

Ubuntu16.04安装libpcap开发库对pcap文件中的数据包进行过滤
  • singleyellow
  • singleyellow
  • 2017年09月30日 17:16
  • 895

"undefined reference to" 问题解决方法

最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func'     ...
  • aiwoziji13
  • aiwoziji13
  • 2012年03月07日 20:13
  • 415961

Centos下安装libpcap

libpcap是一个网络数据包捕获函数库,功能非常强大,Linux下著名的tcpdump就是以它为基础的。我们可以利用它来完成自己的sniffer。 1.安装 下载最新版本的libpcap,下载地...
  • xygl2009
  • xygl2009
  • 2014年02月18日 10:55
  • 915

error while loading shared libraries: libpcap.so.1 解决方法

错误提示:error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such fil...
  • JIANGXIN04211
  • JIANGXIN04211
  • 2015年12月22日 15:40
  • 1209
收藏助手
不良信息举报
您举报文章:在ubuntu下安装libpcap库
举报原因:
原因补充:

(最多只允许输入30个字)