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。希望这篇博文能够为您的工作提供帮助!

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

相关推荐
大霞上仙9 小时前
selenium 在已打开浏览器上继续调试
python·selenium·测试工具
互联网杂货铺15 小时前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
大霞上仙15 小时前
postman读取文件执行
测试工具·postman
测试者家园18 小时前
ChatGPT与接口测试工具的协作
软件测试·测试工具·chatgpt·接口测试·ai赋能·用chatgpt做软件测试·测试图书
ggggyyyyy092818 小时前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
测试199818 小时前
Chrome+Postman做接口测试
自动化测试·软件测试·chrome·测试工具·职场和发展·测试用例·postman
憧憬一下20 小时前
PCIe_Host驱动分析_地址映射
arm开发·嵌入式硬件·嵌入式·linux驱动开发·pci/pcie
楼兰公子21 小时前
相机主要调试参数
arm开发·驱动·camera·v4l2
爱学测试的李木子1 天前
性能】JDK和Jmeter的安装与配置
java·开发语言·软件测试·测试工具·jmeter
wang09071 天前
抓包之使用wireshark抓http2的包
网络·测试工具·wireshark