Linux安装libpcap(pcap.h库)(以Ubuntu 18.04为例)

2023-05-16

做毕业设计需要用到libpcap来抓包,借此次机会完整记录下自己的安装过程,前人种树后人乘凉。

到libpcap官网去下载最新的源码包,下载完成后tar -xzf 文件.tar.gz 解压,于是我们可以看到完整的源码目录。
目录就不贴了,我们查看下安装说明文件 INSTALL.md

vi INSTALL.md  #自行安装合适编辑器即可 

编译所需要求
以上为libpcap源码编译的要求,需要ANSI C 编译器,Flex 2.5.31或以上,Bison,Berkely YACC这些都可以通过源码编译安装,可以在给出的网址找到,
但要是都源码安装那还用什么软件包管理工具呢。

gcc笔者已经装过,方法类似

sudo apt-get update
sudo apt-get install flex bison byacc 

自动解决软件包之间的依赖问题
解决依赖
也可以通过以下命令来查看软件包的具体信息

apt-cache show 软件包 

接下来进入libpcap源码目录

./configure
make
sudo make install

编译完成的截图
编译成功
正常编译成功安装也不会有问题。
那我们来测试下库是否可以正常使用(demo来源于网上侵删)

#include <string.h>
#include <stdlib.h>
#include <pcap.h>

#define MAXBYTE2CAPTURE 2048

void processPacket(u_char *arg, const struct pcap_pkthdr *pkthdr, const u_char *packet) {
  int i = 0, *counter = (int *) arg;
  printf("Packet Count: %d\n", ++(*counter));
  printf("Received Packet Size: %d\n", pkthdr->len);
  printf("Payload:\n");
  for (i = 0; i < pkthdr->len; i++) {
    if (isprint(packet[i]))
      printf("%c ", packet[i]);
    else
      printf(". ");
    if ((i % 16 == 0 && i != 0) || i == pkthdr->len - 1)
      printf("\n");
  }
  return;
}

int main() {
  int i = 0, count = 0;
  pcap_t *descr = NULL;
  char errbuf[PCAP_ERRBUF_SIZE], *device = NULL;
  memset(errbuf, 0, PCAP_ERRBUF_SIZE);
  /* Get the name of the first device suitable for capture */
  device = pcap_lookupdev(errbuf);
  printf("Opening device %s\n", device);
  /* Open device in promiscuous mode */
  descr = pcap_open_live(device, MAXBYTE2CAPTURE, 1, 512, errbuf);
  /* Loop forever & call processPacket() for every received packet */
  pcap_loop(descr, -1, processPacket, (u_char *) &count);
  return 0;
}  

gcc test.c -lpcap -o test
sudo ./test

此时出现
error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
默认程序将libpcap.so.1.9.0安装在/usr/local/lib 底下,有着这几个文件
libpcap.a libpcap.so libpcap.so.1 libpcap.so.1.9.0
其中libpcap.so.1是指向libpcap.so.1.9.0的软链接
我们只需要将链接拷贝到/usr/lib即可

sudo cp libpcap.so.1 /usr/lib/

此时再次运行程序,程序已经可以正常抓包了
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux安装libpcap(pcap.h库)(以Ubuntu 18.04为例) 的相关文章

随机推荐

  • Linux防火墙firewalld不生效,无法拦截Docker映射端口

    今天出现了一个奇怪的现象 xff0c centos服务器上的防火墙 firewall 没有开放8103端口 xff0c 但是依然可以访问 服务器开放的端口如下 xff1a 可以看出并没有开放8103端口 开放的服务如下 xff1a 也没有开
  • java各种集合类区别

    最近面试经常遇到java集合类的问题 xff0c 上网搜了一下 xff0c 做个笔记 百度的图 集合类 型主要有3种 xff1a set 集 xff09 list 列表 xff09 和map 映射 集合接口 分为 xff1a Collect
  • windows10下wsl2、Ubuntu20.04、中文设置、Rust、vscode、chrome谷歌浏览器安装配置总结

    1 Microsoft Store 中安装 windows Terminal 2 更新 wsl 或 Microsoft Store 中安装 wsl2 wsl span class token parameter variable versi
  • 【python算法】图的遍历与最小路径

    数据结构中 xff0c 图的应用场景非常广泛 xff0c 与我们的生活息息相关 xff0c 在基于图做的应用中 xff0c 比较典型的有 xff1a 在交通规划中的最小生成树 xff0c 用于导航的最短路径等 比如下图 这里 xff0c 我
  • 安装react-devtools时npm install失败解决方法

    网上的所有教程基本都是把v3zip下载下来后淘宝镜像安装依赖 xff1a npm registry https registry npm taobao org install 但按照这种方法会出现如下报错 npm ERR code 1 np
  • java -虹软Caused by: java.lang.UnsatisfiedLinkError: Can‘t load library: **\WIN64\libarcsoft_face.dll

    错误详情 Caused by java lang UnsatisfiedLinkError Can t load library F code WIN64 libarcsoft face dll 如图 xff1a 错误原因 一般遇到问题 x
  • Fragment的使用(Android实现底部导航栏)

    xfeff xfeff xfeff xfeff 一 布局页面添加 1 添加四个切换页面的布局 xff08 1 xff09 四个切换页面的布局 四个页面相同 xff09 xff1a lt xml version 61 34 1 0 34 en
  • Java 线程安全

    引入1 xff1a 计算机内存模型 span class token number 1 span 因为向主内存中读写数据的速度要远远小于 span class token constant CPU span 处理数据的速度 xff0c 所有
  • Debian11安装MySql8

    下载地址点击这里 官方安装文档点击这里 Installing MySQL on Linux Using Debian Packages from Oracle xff09 安装 span class token comment 安装依赖 s
  • 消息队列技术的介绍和原理(MQ)

    最近要做一个项目准备用分布式消息队列 xff0c 花点时间看了下 消息队列技术是分布式应用间交换信息的一种技术 消息队列可驻留在内存或磁盘上 队列存储消息直到它们被应用程序读走 通过消息队列 xff0c 应用程序可独立地执行 它们不需要知道
  • win10如何修改C盘User下的用户名

    温馨提示 仅供参考 xff0c 不建议小白在本机测试 xff0c 不然会有需要 重装 的风险 建议操作前设置还原点 重要数据备份 xff01 xff01 xff01 然后Win11就别尝试了 xff0c 而且一旦失败的话 xff0c 就只能
  • 极狐Gitlab操作手册

    用户管理 普通用户可以访问他们的群组和项目 用户可以无限制地访问所有群组 项目 用户和功能 群组管理 项目管理 创建项目 为项目添加成员 其它设置 为当前用户配置SSH密钥 本地生成SSH密钥 提交本地项目到gitlab span clas
  • WIN11之RocketMQ5.0安装

    官网地址 xff1a https rocketmq apache org docs quick start 下载地址 xff1a https rocketmq apache org dowloading 下载 系统要求 span class
  • Kubernetes 对象

    什么是对象 K8s集群中创建的任何东西都可以被视为对象 xff1a Deployment Pod Service等等 对象类型 kubectl api resources span class token comment 查询所有type
  • K8S DashBoard控制台

    前言 Dashboard 是基于网页的 Kubernetes 用户界面 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中 xff0c 也可以对容器应用排错 xff0c 还能管理集群资源 你可以使用 Dashbo
  • Debian11之基于二进制安装K8S(v1.26.x) 集群

    官网地址 xff1a https kubernetes io zh cn docs home supported doc versions 资源列表 主机IP主机名称主机角色软件192 168 111 30master1主节点1kube a
  • Kubernetes Service、Ingress、Ingress Controller

    Kubernetes 网络模型 K8S 是一种容器编排系统 xff0c 可以方便地管理和部署容器应用程序 它支持通过四层负载和七层负载向容器集群中的应用程序提供负载均衡 四层负载是一种基于传输层协议 xff08 例如TCP UDP xff0
  • 浅析JAVA中的抽象类

    span class hljs keyword abstract span class Animal span class hljs keyword abstract span span class hljs keyword void sp
  • 安装 Ubuntu

    1 del 进入bios 选择从USB启动 2 安装ubuntu 3 准备安装Ubuntu 不用选 4 安装类型 选择something else 可以自己分区 5 分为四个区 swap 交换分区 不用格式化 boot 引导和内核分区 格式
  • Linux安装libpcap(pcap.h库)(以Ubuntu 18.04为例)

    做毕业设计需要用到libpcap来抓包 借此次机会完整记录下自己的安装过程 xff0c 前人种树后人乘凉 到libpcap官网去下载最新的源码包 下载完成后tar xzf 文件 tar gz 解压 xff0c 于是我们可以看到完整的源码目录