ubuntu libpcap安装
环境为Ubuntu10.10+libpcap-1.1.1.tar.gz
1、Libpcap下载
Libpcap的官方网站是http://tcpdump.org/release,可以从该网站下载最新版本,当前系统使用的Libpcap安装文件是libpcap-1.1.1.tar.gz
2、解压
tar zxvf libpcap-1.1.1.tar.gz
3、配置
切换近libpcap解压目录libpcap-1.1.1,使用configure配置命令生成Makefile文件。
./configure
在这一步可能会遇到缺少flex包的问题:
configure: error: Your operating system's lex is insufficient to compile libpcap. flex is a lex replacement that has many advantages, including being able to compile libpcap. For more information, see http://www.gnu.org/software/flex/flex.html .
解决方法:
sudo apt-get install flex
4、编译
make
可能会遇到yacc错误:
yacc -d ./parse.y
make: yacc: Command not found
make: *** [parse.c] Error 127
解决方法:
sudo apt-get install -y byacc
5、安装
sudo make install
注意:要加上sudo,不然会出现权限问题。
6、示例
testlibpcap.c文件,目的是为了查询网络设备。
#include<stdio.h> #include<stdlib.h> #include<pcap.h> #include<errno.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> int main(int argc,char *argv[]) { char *dev; char *net; char *mask; int ret; char errbuf[PCAP_ERRBUF_SIZE]; bpf_u_int32 netp; bpf_u_int32 maskp; struct in_addr addr; dev = pcap_lookupdev(errbuf); if(dev ==NULL) { printf("%s\n",errbuf); exit(1); } printf("设备名:%s\n",dev); return 0; }
然后编译:
gcc testlibpcap.c -lpcap -o testlibpcap
gcc编译后,运行./testlibpcap会出错:
: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
解决方法:
到/usr/lib下找到libpcap.so.1.x.x文件,复制一个备份,重命名为libpcap.so.1,将libpcap.so.1后拷贝文件到/usr/lib目录下,就可以了。
还有一点需要注意:
如果直接这样运行./testlibpcap,结果肯定是“no suitable device found”,原因是权限不够,所以,还需要这样运行才能结果正常。
sudo ./testlibpcap