yocto 下基于SDK的 tcpdump 移植

系列文章目录

【1】yocto系统构建

【2】yocto下mosquitto用户名和密码配置

【3】yocto 下基于SDK的 tcpdump 移植


文章目录


前言

tcpdump 是一个强大的网络数据包分析工具,可以捕获并显示通过网络接口传输的TCP/IP和其他协议数据包。它通常用于网络故障排查、性能监测以及安全分析等场合。在Yocto项目中,移植tcpdump到目标设备可以大大增强其网络分析能力,帮助开发者和运维人员更好地理解网络通信。

前段时间,拿到一块板子上并没有tcpdump 工具,对于一个涉及网络开发人员来说,没有这个工具开发定位问题很不方便,简直不可忍受,这边90%的网络问题定位诊断都依靠它了,不知道大家有没有和我一样的感受,这边记录下总结下yocto上基于SDK环境移植tcpdump 的过程,这个工具经常会用到的,方便其他平台上也有类似需求,供后面回顾,减少重复性工作。


一、移植tcpdump的意义

1.网络排错:在嵌入式设备中,网络问题往往难以下判断。tcpdump 提供实时网络流量监控,帮助开发者快速定位问题。

2.数据包分析:抓取并分析网络数据包,可以帮助开发者优化应用性能,减少不必要的网络开销。

3.安全监测:通过抓包分析,能够识别潜在的网络攻击或异常流量,增强设备的安全性。

开发调试:在网络应用开发过程中,tcpdump可以作为重要的调试工具,帮助开发者理解网络协议的工作原理和数据交互方式。

二、移植步骤

1. 准备Yocto环境

确保你的工作环境中已正确设置Yocto,并且安装了所有必要的工具。你需要有一个有效的Yocto构建环境和相应的目标设备支持。

我这边编译主机及SDK工具链环境如下:

c 复制代码
iot@iot:~/som361/IOT/open_src$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
iot@iot:~/som361/IOT/open_src$ echo $CC
arm-poky-linux-gnueabi-gcc -march=armv7ve -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/iot/som361/toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi

目标机器环境如下:

c 复制代码
root@imx6ull14x14evk:~# cat /etc/os-release 
ID="fsl-imx-xwayland"
NAME="NXP i.MX Release Distro"
VERSION="4.14-sumo (sumo)"
VERSION_ID="4.14-sumo"
PRETTY_NAME="NXP i.MX Release Distro 4.14-sumo (sumo)"

2.获取源码,配置和编译

编写脚本 vi build_tcpdump.sh:

c 复制代码
#!/bin/bash 

# 交叉编译工具链的路径 
export SYSROOT=/home/iot/som361/toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi

#下载源码
wget https://www.tcpdump.org/release/tcpdump-4.9.3.tar.gz

#解压源码
tar -xvf tcpdump-4.9.3.tar.gz

cd tcpdump-4.9.3

# 配置
./configure --host=arm-poky-linux-gnueabi --prefix=/home/iot/som361/IOT/open_src/install_tcpdump_dir CFLAGS="--sysroot=$SYSROOT" CXXFLAGS="--sysroot=$SYSROOT"

# 编译安装
make
make install

给脚本执行权限并执行

c 复制代码
chmod 777 build_tcpdump.sh
./build_tcpdump.sh

执行成功后结果如下

可以看到install_tcpdump_dir/sbin/目录下成功生成 tcpdump, tcpdump.4.9.3

3.移植到目标设备

可用scp 命令或可视化工具,拷贝tcpdump到目标板子 /usr/bin下,

并给可执行权限 chmod 777 tcpdump

c 复制代码
root@imx6ull14x14evk:~# ls -l /usr/bin/tcpdump
-rwxr-xr-x 1 root root 2061836 Oct 30 14:28 /usr/bin/tcpdump

4.测试tcpdump

在设备上运行以下命令,我这边用web端UI操作了下,可以看到抓到数据:

---

总结

在Yocto下移植tcpdump可以极大增强嵌入式设备的网络分析能力,帮助开发者解决各种网络相关问题。通过上述步骤,您将能够在自己的Yocto项目中成功集成和使用tcpdump。希望这篇博文能够为您的工作提供帮助!

***你好,我是阿灿,慢慢理解世界,慢慢更新自己。

相关推荐
低配加班人7 小时前
【Jetson AGX Orin(Arm Linux)安装pyqt5及Format_BGR888报错】
linux·arm开发·qt
daopuyun8 小时前
申请CNAS软件测试资质,如何选择测试工具最具性价比?
测试工具
卓码测评8 小时前
第三方软件检测公司分享:软件性能测试有哪些好用的测试工具?
软件测试·测试工具
测试老哥15 小时前
Python+Selenium+Pytest+POM自动化测试框架封装(完整版)
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
憧憬一下16 小时前
input子系统的框架和重要数据结构详解
arm开发·嵌入式·c/c++·1024程序员节·linux驱动开发
独行soc17 小时前
#渗透测试#红蓝对抗#Src漏洞挖掘 介绍-Yakit(3)
测试工具·web安全·网络安全·yakit·护网
互联网杂货铺17 小时前
Python测试框架—pytest详解
自动化测试·软件测试·python·测试工具·测试用例·pytest·1024程序员节
T_Y994318 小时前
selenium学习日记
学习·selenium·测试工具
TeYiToKu21 小时前
笔记整理—linux驱动开发部分(1)驱动梗概
linux·c语言·arm开发·驱动开发·嵌入式硬件