【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,一经查实,立即删除!

相关文章

TestNG注释- @BeforeMethod

在这篇文章中,我们将学习TestNG中的BeforeMethod注释。BeforeMethod注释方法将在类中的每个测试用例或方法之前执行,但在BeforeClass注释方法之后执行。因此,这意味着BeforeMethod注释将运行与特定类中的测试用例一样多的次数。 那么&#x…

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

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

【linux-interconnect】What NVIDIA MLNX_OFED is?

NVIDIA MLNX_OFED Documentation v23.07 - NVIDIA Docs 文章目录 What NVIDIA MLNX_OFED is?Overview[Software Download](https://docs.nvidia.com/networking/display/mlnxofedv23070512#src-2396583107_NVIDIAMLNX_OFEDDocumentationv23.07-SoftwareDownload) Wh…

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

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将看得见的界面设计与看不…

开发 Chrome 浏览器插件时进行 Vue3+Vite 多页面多入口配置

使用 Vite 开发 Chrome 插件时,构建多页面以及多 js 文件 因为发现 Vite 多页面构建有很多分歧以及问题点,所以我把我在 Chrome 插件开发上面使用到的 Vite 多页面以及多入口文件构建配置单独拿出来 开发 Chrome 插件是,一般会需要一个 popup…

eNSP学习——交换机基础

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

Leetcode HOT 100 - 2. 两数相加(Java + 链表)

文章目录 题目思路Java 链表第 1 步:第 2 步: 复杂度Code 题目 Problem: 2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加&am…

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

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

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

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

mmdetecion

安装和测试: GET STARTED — MMDetection 3.3.0 documentation mmdetection从配置到训练_openmim-CSDN博客 训练voc数据集: mmdetection训练自己的VOC数据集及常见问题_mmdetection训练voc数据集-CSDN博客 训练自己的COCO数据集及常见问题见下文&…

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

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

flink学习之窗口处理函数

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

Java事务的传播

Java事务的传播详解 欢迎来到本博客,今天我们将深入探讨Java中事务传播行为,这是在处理多个事务边界时至关重要的一环。 1. 事务传播概述 在Java中,事务是一系列操作的执行单元,要么全部执行成功,要么全部回滚。事务…

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…