【LIBS】交叉编译TCPDUMP

目录

  • 1. 安装编译工具
  • 2. 设置环境变量
  • 3. 编译libpcap
    • 3.1 安装依赖
    • 3.2 交叉编译
  • 4. 编译TCPDUMP
    • 4.1 克隆仓库与生成构建环境
    • 4.2 静态链接LIBPCAP
    • 4.3 动态链接LIBPCAP
    • 4.4 构建与安装
  • 5. 查看交叉编译结果
    • 5.1 文件布局

1. 安装编译工具

sudo apt-get install -y autoconf automake libtool pkg-config

2. 设置环境变量

# 交叉编译工具链的根目录
export TLCS_ROOT=...-x86_64_aarch64-linux-gnu

3. 编译libpcap

3.1 安装依赖

sudo apt-get install -y flex bison

3.2 交叉编译

# 克隆源码
git clone --recursive -b libpcap-1.9.1 https://github.com/the-tcpdump-group/libpcap.git# 进入仓库
cd libpcap# 生成构建环境
autoreconf -fiv# 创建构建目录
rm -rf build_aarch64; mkdir build_aarch64 && cd build_aarch64# 生成Makefile。其中,CFLAGS="-O2" 用于去除生成文件中的调试信息
env -v                                           \
AR=${TLCS_ROOT}/bin/aarch64-linux-gnu-ar         \
CC=${TLCS_ROOT}/bin/aarch64-linux-gnu-gcc        \
RANLIB=${TLCS_ROOT}/bin/aarch64-linux-gnu-ranlib \
CFLAGS="-O2"                                     \
../configure                                     \
--with-pcap=linux                                \
--host=aarch64-linux-gnu                         \
--prefix=${HOME}/libs/libpcap-1.9.1# 构建与安装
make -j16 && make install

4. 编译TCPDUMP

4.1 克隆仓库与生成构建环境

# 克隆源码
git clone --recursive -b tcpdump-4.9.3 https://github.com/the-tcpdump-group/tcpdump.git# 进入仓库
cd tcpdump# 生成构建环境
autoreconf -fiv# 创建构建目录
rm -rf build_aarch64; mkdir build_aarch64 && cd build_aarch64

4.2 静态链接LIBPCAP

env -v                                           \
CC=${TLCS_ROOT}/bin/aarch64-linux-gnu-gcc        \
AR=${TLCS_ROOT}/bin/aarch64-linux-gnu-ar         \
RANLIB=${TLCS_ROOT}/bin/aarch64-linux-gnu-ranlib \
CPPFLAGS="-I${HOME}/libs/libpcap-1.9.1/include"  \
LDFLAGS="-L${HOME}/libs/libpcap-1.9.1/lib"       \
LIBS="-static -lpcap"                            \
CFLAGS="-O2"                                     \
../configure                                     \
--host=aarch64-linux-gnu                         \
--prefix=${HOME}/libs/libtcpdump-4.9.3

4.3 动态链接LIBPCAP

env -v                                           \
CC=${TLCS_ROOT}/bin/aarch64-linux-gnu-gcc        \
AR=${TLCS_ROOT}/bin/aarch64-linux-gnu-ar         \
RANLIB=${TLCS_ROOT}/bin/aarch64-linux-gnu-ranlib \
CPPFLAGS="-I${HOME}/libs/libpcap-1.9.1/include"  \
LDFLAGS="-L${HOME}/libs/libpcap-1.9.1/lib"       \
LIBS="-dynamic -lpcap"                           \
CFLAGS="-O2"                                     \
../configure                                     \
--host=aarch64-linux-gnu                         \
--prefix=${HOME}/libs/libtcpdump-4.9.3

4.4 构建与安装

make -j16 && make install

5. 查看交叉编译结果

5.1 文件布局

cd ${HOME}/libs
tree . -L 3

交叉编译结果的文件布局

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/647789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构篇25:高可用存储架构-双机架构

文章目录 主备复制主从复制双机切换主主复制小结存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个方面去进行思考…

爬取第一试卷网高三数学试卷并下载到本地

import requests import re import os filename 试卷\\ if not os.path.exists(filename):os.mkdir(filename) url https://www.shijuan1.com/a/sjsxg3/list_727_1.html headers {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.…

第二百八十七回

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

DDOS攻击有哪几种类型

DDOS攻击“分布式拒绝服务”是目前网站服务器所常见的恶意攻击,其原理是通过控制大量肉鸡(虚假流量)访问网站服务器消耗带宽、内存等资源,其目的是使得网站服务器无法正常的访问,其后果是直接导致企业业务受损,数据丢失&#xff0…

Android开发修炼之路——(一)Android App开发基础-3

本专栏文章: Android开发修炼之路——(一)Android App开发基础-1 Android开发修炼之路——(一)Android App开发基础-2 3 App的设计规范 本节介绍了App工程的源码设计规范,首先App将看得见的界面设计与看不…

eNSP学习——交换机基础

目录 原理概述 实验目的 实验步骤 实验内容 实验拓扑 实验步骤 基础配置 配置交换机双工模式 配置接口速率 思考题 原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数,比如速率、双工模式等。   接口速率:指的是交换机接口每秒钟传…

【Go 快速入门】安装 Go 语言 | 开发工具 Goland | 第一个 Go 语言程序

文章目录 前言安装 Go 语言编译器 Goland运行 Go 程序补充 前言 本系列教程,目的是帮助一个有其他编程基础的 Go 语言小白快速入门 Go 语言,而非启发式学习。每篇幅保证不说废话,尽可能精炼总结,为上手后续的 Go 相关项目打下基础…

基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT)

一、项目介绍 随着科技的不断发展和人们生活水平的提高,农业生产也逐渐向智能化、高效化的方向发展。水稻作为我国主要的粮食作物之一,其生长过程中的灌溉管理尤为重要。传统的灌溉方式往往依赖于人工观察和控制,不仅效率低下,而…

搜索与图论第五期 拓扑序列

前言 拓扑排序是非常重要的一部分,希望大家都能够手撕代码!!!(嘿嘿嘿) 一、拓扑排序定义(百度须知嘿嘿嘿) 拓扑排序 拓扑排序是一种对有向无环图(Directed Acyclic Gra…

flink学习之窗口处理函数

窗口处理函数 什么是窗口处理函数 Flink 本身提供了多层 API,DataStream API 只是中间的一环,在更底层,我们可以不定义任何具体的算子(比如 map(),filter(),或者 window()),而只是…

GitHub Copilot 与 ChatGPT:哪种工具更适合软件开发?

GitHub Copilot 与 ChatGPT:哪种工具更适合软件开发? 比较 ChatGPT 与 GitHub Copilot编程语言功能性定制化训练数据上下文准确性 ChatGPT 与 GitHub Copilot:哪个更适合软件开发?常见问题解答: 不断发展的编程世界正在…

深入理解stress/stress-ng

文章目录 一、概述二、安装2.1、源码编译安装2.2、命令行安装2.3、安装确认 三、重要参数详解3.1、查询支持的参数3.2、重要参数说明 四、实例4.1、压测CPU4.2、压测内存4.3、压测IO4.4、压测磁盘及IO4.5、压测磁盘及CPU 团队博客: 汽车电子社区 一、概述 stress是一种工作负载…

电子行业含砷废水,深度除砷技术

砷是一种类金属元素,砷化物生物毒性极强,是国际公认的第一类致癌物。因此,这些含砷废水必须经过一定的处理才能排放到环境中。那么,哪些行业会产生含砷废水呢?在地球上,砷是一种常见的元素。在自然界中,砷…

2023年CSDN年底总结-独立开源创作者第一年

2023年最大的变化,就是出来创业,当独立开源创作者,这一年发起SolidUI开源项目,把知乎重新开始运营起来。CSDN粉丝破万,CSDN博客专家和AI领域创作者。 2023年年度关键词:创业 https://github.com/CloudOrc…

SpringBoot责任链与自定义注解:优雅解耦复杂业务

引言 责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者处理请求。在实际应用中,责任链模式常用于解耦发送者和接收者,使得请求可以按照一定的规则被多个处理者依次处理。 首先,本…

Ceph篇之利用Prometheus监控ceph服务

一、Ceph内置模块 Ceph manager 内部的模块中包含了 prometheus 的监控模块,并监听在每个 manager 节点的 9283 端口,该端口用于将采集到的信息通过 http 接口向 prometheus 提供数据。 二、监控搭建 1、启用 prometheus 监控模块 ceph mgr module enable promethe…

Java+Spring Cloud +Vue+UniApp微服务智慧工地云平台源码

目录 智慧工地云平台功能 【劳务工种】所属工种有哪些? 1.管理人员 2.信息采集 3.证件管理 4.考勤管理 5.考勤明细 6.工资管理 7.现场统计 8.WIFI教育 9.课程库管理 10.工种管理 11.分包商管理 12.班组管理 13.项目管理 智慧工地管理平台是以物联网、…

Windows物理主机迁移至VMware ESXI服务器

文章目录 物理主机迁移至VMware ESXI服务器一、迁移环境二、迁移步骤1、主机A准备工作1、关闭主机A的防火墙2、主机A需要设置管理员密码3、主机A需要设置允许共享访问 2、主机B操作步骤1、安装**VMware vCenter Conver…

鸿蒙开发第2篇__装饰器

在ArkTS中, 有装饰器语法。 装饰器用于装饰类、结构、方法、变量,赋予其特殊的含义。 1. Component 表示自定义组件, 用此装饰器的组件是可重用的,可以与其他组件重合 此装饰器装饰的 struct 表示该结构体具有组件化能力&#…

Java复习系列之阶段二:数据库(2)

1. 基础语法 1.1 DQL(数据查询语句) 执行顺序: from、join 、on、where、group by、having、select、distinct、order by、limit 1.2 DML(数据修改语言) 对数据表的增删改 insert into update set delete form 1.…