嵌入式交叉编译tcpdump

今天花了1个小时弄的。主要目的是在mipsel的嵌入式系统上用上网络抓包工具。
1. 需要先编译libpcap-1.2.1.tar.gz,tcpdump程序依赖于libpcap库
2. 编译命令:./configure --host=mipsel-linux --with-pcap=linux
3. make.完成后在源码目录下就生成了静态库和动态库
4. 接着编译tcpdump-4.2.1。一般来说会自动查找libpcap库(静态库)
5. ./configure --host=mipsel-linux
6. 报错:configure: error: cannot determine linux version when cross-compiling
7. 修改configure,将 ac_cv_linux_vers=unknown改成 ac_cv_linux_vers=2.6.37
8. 重新配置,成功
9. 开始make,又报错:
./addrtoname.c: In function 'intoa':
./addrtoname.c:180:2: error: invalid 'asm': invalid use of '%w'
./addrtoname.c:180:2: error: invalid 'asm': invalid use of '%w'
10.经过检查是因为头文件包含有问题,包含到/usr/include目录下了,正常是要使用交叉编译环境的include
11.修改Makefile,将
INCLS = -I. -I./../libpcap-1.2.1 -I/usr/include -I./missing
改为:
INCLS = -I. -I./../libpcap-1.2.1 -I./missing -I/opt/brcm/linux/arch/mips/include
12.编译成功,生成可执行文件tcpdump
13.拷贝到板子上执行tcpdump -i eth0 即可。
官方网址:http://www.tcpdump.org
帮助手册:http://www.tcpdump.org/tcpdump_man.html
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头
匹配特定mac地址的数据包。
tcpdump ether src 00:19:21:1D:75:E6

你可能感兴趣的:(linux,网络,function,嵌入式,include,makefile)