移植tcpdump到嵌入式系统
tcpdump和libpcap的下载链接:Home | TCPDUMP & LIBPCAP
百度网盘下载链接:https://pan.baidu.com/s/1dkc9FVo5h6gFSxnboE_Jyg 密码: 2kjh
我们这里 使用libpcap-1.4.0和tcpdump-4.4.0,为什么选择这两个版本,因为这两个版本跟嵌入式上使用的内核版本发行日期接近,如果安装的应用软件的发行日期跟内核的发行日期相差很远,可能会遇到意想不到的问题。
1.编译安装libpcap-1.4.0
这里下载libpcap-1.4.0,解压并进入libpcap-1.4.0目录,打开configure,将下面的代码注释掉,如下所示。
#if test -z "$with_pcap" && test "$cross_compiling" = yes; then
# { { echo "$as_me:$LINENO: error: pcap type not determined when cross-compiling; use --with-#pcap=..." >&5
#echo "$as_me: error: pcap type not determined when cross-compiling; use --with-pcap=..." >&2;}
# { (exit 1); exit 1; }; }
#fi
运行./configure --host=arm-linux-gnueabihf,配置交叉编译器。注:此处嵌入式环境平台使用的时arm-none-linux-gnueabi交叉链,如果你使用的时其他的交叉编译链则改为自己的即可。
配置完成后,配置之后,会生成Makefile。打开Makefile发现CC=arm-linux-gnueabihf,说明交叉编译配置成功,然后修改prefix,如下图所示。
执行make命令进行编译,执行makeinstall命令进行安装。执行make install之后,可以看到在路径/home/tianbot/EtherCATMaster/libpcap-1.4.0/libpcap_make下,有如下图所示的文件生成。
2.编译安装tcpdump-4.4.0
进入tcpdump目录,修改configure,将下图所示的代码注释掉。
#if test $ac_cv_linux_vers = unknown ; then
# as_fn_error $? "cannot determine linux version when cross-compiling" "$LINENO" 5
#fi
运行./configure --host=arm-linux-gnueabihf,配置交叉编译器。打开生成的Makefile,修改以下编译选项。
执行make命令进行编译,执行makeinstall命令进行安装。安装成功后,会在指定的安装目录下生成一些文件,如下图所示。
- 将tcpdump安装到嵌入式开发板
编译生成的可执行文件的目录,如下所示,将tcpdump通过FileZilla放到嵌入式开发板/bin目录下。
tianbot@ros2go:~/EtherCATMaster/tcpdump-4.4.0/tcpdump_make/sbin$ ls
tcpdump tcpdump.4.4.0
完成安装