tcpdump交叉编译
由于TCPDUMP基于Libpcap上开发,所以首先需要编译libcap。
网上那么多教程,下载地址都只给了一个英文的官网首页, 你尽可以试试,从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程,下载地址都只给了一个英文的官网首页,\\ 你尽可以试试,从里面找到下载地址都要费半天时间。 网上那么多教程,下载地址都只给了一个英文的官网首页,你尽可以试试,从里面找到下载地址都要费半天时间。
tcpdump下载地址:https://www.tcpdump.org/release/
本文使用的libcap版本是libpcap-1.10.5,tcpdump版本是tcpdump-4.99.5
编译libcap前要设置操作系统、指令集、目录等。切换到解压目录执行如下命令。
powerpc指令集:
./configure --host=powerpc-linux-gnu --with-pcap=linux
arm指令集:
./configure --prefix=/home/ljg/tcpdump/tools --host=arm-linux --target=arm-linux CC=arm-linux-gnueabihf-gcc --with-pcap=linux
然后执行make命令即可。
编译TCPDUMP前要设置操作系统、指令集、目录等。
需要注意的是:因为tcpdump的编译依赖于libcap,所以命令中"–prefix=/home/ljg/tcpdump/tools"这一字段值要与libcap的设置保持一致。
切换到TCPDUMP解压目录执行如下命令。
powerpc版架构:
./configure --host=powerpc-linux-gnu --with-pcap=linux CPPFLAGS="-I/home/ljg/Desktop/work/libpcap-1.10.6" LDFLAGS="-static -L/home/ljg/Desktop/work/libpcap-1.10.6" LIBS="-lpcap"
arm版架构:
./configure --prefix=/home/ljg/tcpdump/tools --host=arm-linux --target=arm-linux CC=arm-linux-gnueabihf-gcc ac_cv_linux_vers=2
编译成功后的截图:

tcpdump命令格式:
tcpdump -i netcard_name port 12345 -w xxxxx.pcap
另外还需要提醒的非常重要的一点:
假如编译出来的程序,被上传到嵌入式设备, 并且运行时有如下错误,请在 M a k e f i l e 中的 C F L A G S 和 L D F L A G S 中添加 " − − s t a t i c " 选项。 \color{red}假如编译出来的程序,被上传到嵌入式设备,\\ 并且运行时有如下错误,请在Makefile中的\\ CFLAGS和LDFLAGS中添加"--static"选项。 假如编译出来的程序,被上传到嵌入式设备,并且运行时有如下错误,请在Makefile中的CFLAGS和LDFLAGS中添加"−−static"选项。

–static或者-static都可以,为什么?
参考链接:
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)