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 小时前
Apipost 与 Postman 工具实践指南:WebSocket调试与动态参数测试
websocket·测试工具·postman
shimly1234567 小时前
tcpdump 用法示例
网络·测试工具·tcpdump
程序员老舅8 小时前
C++ Qt项目教程:WebServer网络测试工具
c++·qt·测试工具·webserver·qt项目·qt项目实战
绿色果酱11 小时前
利用Postman和Apipost进行WebSocket调试和文档设计
websocket·测试工具·yapi·postman
测试199817 小时前
Jmeter HTTP代理服务器录制压力脚本
自动化测试·软件测试·测试工具·jmeter·程序人生·职场和发展·测试用例
kongba00717 小时前
Cursor提示词模板,开发GD32,C语言开发GD32 ARM单片机编程规范提示词 大厂风格代码规范
c语言·arm开发·单片机
bug管理者18 小时前
分享几款比较常用的接口测试工具
测试工具
程序员 小濠18 小时前
接口测试基础 --- 什么是接口测试及其测试流程?
自动化测试·python·测试工具·职场和发展·appium·接口测试·压力测试
亿道电子Emdoor1 天前
【ARM】MDK如何生成指定大小的bin文件,并指定空区域的填充数据
arm开发·stm32·单片机