tcpdump移植

下载源码

tcpdump依赖于libpcap,所以需要先下载这两个的源代码;

官方地址:https://www.tcpdump.org/

编译libpcap

bash 复制代码
$ cd libpcap-libpcap-1.10.6/
$ mkdir build
$ cd build/
$ ../configure --host=aarch64-openwrt-linux CC=aarch64-openwrt-linux-gcc --prefix=$PWD/install  --without-libnl
$ make && make install

编译tcpdump

bash 复制代码
$ cd tcpdump-tcpdump-4.99.6/
$ mkdir build
$ cd build/
$ ln -s ../../libpcap-libpcap-1.10.6/build/install/ libpcap #将前面编译生成的libpcap相关文件挂载到当前目录
$ ../configure --host=aarch64-openwrt-linux CC=aarch64-openwrt-linux-gcc  CFLAGS="-I./libpcap/include/ -L./libpcap/lib/" --without-crypto
$ make

使用

tcpdumplibpcap.so.1.10.6放到bin目录

bash 复制代码
$ chmod +x tcpdump
$ ln -s libpcap.so.1.10.6 libpcap.so.1
$ tcpdump -h #测试

问题解决

libpcap问题

现象

bash 复制代码
aarch64-openwrt-linux-musl/bin/ld: cannot find -lnl-3

原因:没有libnl库

解决:libnl 是可选依赖,用于高级接口管理(非必需)。去除libnl 依赖,增加--without-libnl

bash 复制代码
../configure --host=aarch64-openwrt-linux CC=aarch64-openwrt-linux-gcc --prefix=$PWD/install --without-libnl

tcpdump问题

现象

bash 复制代码
fatal error: openssl/opensslconf.h: No such file or directory
 # include <openssl/opensslconf.h>

原因:交叉工具链的 OpenSSL 不完整

解决:如果不需要使用加密的一些高级特性,可以直接禁用 OpenSSL。 增加--without-crypto

bash 复制代码
../configure --host=arm-linux CC=aarch64-linux-gnu-gcc  CFLAGS="-I./libpcap/include/ -L./libpcap/lib/" --without-crypto
相关推荐
星辰徐哥3 小时前
5G的行业应用:工业互联网、车联网、智慧医疗中的网络支撑
网络·5g·php
k7Cx7e3 小时前
Thinkphp6在Postman中接收不到Post参数的解决办法
测试工具·postman
专吃海绵宝宝菠萝屋的派大星3 小时前
使用postman测试自己编写的mcp服务
测试工具·lua·postman
头疼的程序员3 小时前
计算机网络:自顶向下方法(第七版)第八章 学习分享(三)
网络·学习·计算机网络
@insist1234 小时前
网络工程师-核心考点:网络管理体系与 SNMP 协议全解析
网络·智能路由器·网络工程师·软考·软件水平考试
我科绝伦(Huanhuan Zhou)4 小时前
分享一个网络智能运维系统
运维·网络
codeejun4 小时前
每日一Go-44、Go网络栈深度拆解--从 TCP 到 HTTP 的资源复用艺术
网络·tcp/ip·golang
北京耐用通信5 小时前
无缝衔接·高效传输——耐达讯自动化CC-Link IE转Modbus TCP核心解决方案
网络·人工智能·物联网·网络协议·自动化·信息与通信
亚空间仓鼠5 小时前
OpenEuler系统常用服务(五)
linux·运维·服务器·网络