Chinaunix首页 | 论坛 | 博客
  • 博客访问: 764442
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-17 14:32
个人简介

小公司研发总监,既当司令也当兵!

文章分类

全部博文(144)

分类: LINUX

2015-06-16 15:14:12

在mips上开发,有时候需要抓包分析问题,但系统通常不会自带如tcpdump等高级工具。本文讲述在开发过程中,将tcpdump交叉编译为mips适用的工具,能够在开发板上抓包。本文内容是亲自试验记录,供参考。


1. 叉编译环境
   这个主要是用到了mips-linux-cc,mips-linux-ar , mips-linux-ld 这三个交叉编译的工具,如果没有就去网上下一个,我是用的我们公司的SDK的toolchain。将它加到系统环境变量:在home目录下的中.profile文件尾部添加:

点击(此处)折叠或打开

  1. if [ -d "/home/khls/iWorkspace/xxxProject/build/gcc-4.3.3/build_mips/staging_dir/usr/bin" ] ; then
  2.     PATH="/home/khls/iWorkspace/xxxProject/build/gcc-4.3.3/build_mips/staging_dir/usr/bin:$PATH"
  3. 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。
    

点击(此处)折叠或打开

    make

     在当前目录中就可以查看到编译出来的libpcap.a文件。



    (2) 到tcpdump-4.5.1目录中,我们开始编译tcpdump。首先改configure中 ac_cv_linux_vers的值,这个是我们要跑的 mips linux的版本。然后执行configrue:

点击(此处)折叠或打开

  1. ./configure --host=mips-linux
    之后执行make即可。
    如果,make时出现libpcap头文件包含错误(一般只要两个源码在同一目录,不会出现头文件错误),根据出错信息自行修改Makefile中头文件路径后再编译。另外,如果交叉编译工具链没有export到环境变量中,也可能出现头文件包含有问题,包含到/usr/include目录下了,正常是要使用交叉编译环境的include。把INCLS里/usr/include替换为对应交叉编译的include,把DEFS的/usr、include去掉:

点击(此处)折叠或打开

  1. 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
  2. DEFS = -DHAVE_CONFIG_H -I./../libpcap-1.1.1 -I$(srcdir)/missing -D_U_="__attribute__((unused))"
    make成功后,在当前路径下就有可执行二进制文件tcpdump

4. 上传
    使用tftp或scp将编译好的文件上传到开发板,即可使用。
阅读(7145) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~