在mips上开发,有时候需要抓包分析问题,但系统通常不会自带如tcpdump等高级工具。本文讲述在开发过程中,将tcpdump交叉编译为mips适用的工具,能够在开发板上抓包。本文内容是亲自试验记录,供参考。
1. 叉编译环境
这个主要是用到了mips-linux-cc,mips-linux-ar , mips-linux-ld 这三个交叉编译的工具,如果没有就去网上下一个,我是用的我们公司的sdk的toolchain。将它加到系统环境变量:在home目录下的中.profile文件尾部添加:
-
if [ -d "/home/khls/iworkspace/xxxproject/build/gcc-4.3.3/build_mips/staging_dir/usr/bin" ] ; then
-
path="/home/khls/iworkspace/xxxproject/build/gcc-4.3.3/build_mips/staging_dir/usr/bin:$path"
-
fi
2. 准备源代码
到tcpdump官方网站上抓取最新的 libpcap-1.2.1.tar.gz ,tcpdump-4.5.1.tar.gz ,放到同一个目录下。或者使用apt-get source tcpdump;apt-get source libpcap下载最新源码。
3. 编译
(1) 首先编译libpcap-1.2.1.tar.gz,这个是tcpdump 用到的一些库。解压libpcap-1.2.1.tar.gz,并且改configure中 ac_cv_linux_vers的值,这个是我们要跑的 mips linux的版本。将unknow改成2.6.31 (该值根据你mips平台具体内核版本来设定)。
./configure --host=mips-linux --with-pcap=linux
这一步我们要指定用的地方是mips linux。
在当前目录中就可以查看到编译出来的libpcap.a文件。
(2) 到tcpdump-4.5.1目录中,我们开始编译tcpdump。首先改configure中 ac_cv_linux_vers的值,这个是我们要跑的 mips linux的版本。然后执行configrue:
-
./configure --host=mips-linux
之后执行make即可。
如果,make时出现libpcap头文件包含错误(一般只要两个源码在同一目录,不会出现头文件错误),根据出错信息自行修改makefile中头文件路径后再编译。另外,如果交叉编译工具链没有export到环境变量中,也可能出现头文件包含有问题,包含到/usr/include目录下了,正常是要使用交叉编译环境的include。把incls里/usr/include替换为对应交叉编译的include,把defs的/usr、include去掉:
-
incls = -i. -i./../libpcap-1.1.1 -i/usr/local/mips/4.3.3/build/gcc-4.3.3/build_mips/staging_dir/usr/lib/gcc/mips-linux-uclibc/4.3.3/include -i$(srcdir)/missing
-
defs = -dhave_config_h -i./../libpcap-1.1.1 -i$(srcdir)/missing -d_u_="__attribute__((unused))"
make成功后,在当前路径下就有可执行二进制文件tcpdump
4. 上传
使用tftp或scp将编译好的文件上传到开发板,即可使用。
阅读(7039) | 评论(0) | 转发(0) |