交叉编译tcpdump

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交叉编译tcpdump相关的知识,希望对你有一定的参考价值。

原创文章,转载请正确注明本文原始URL及作者;违反要求者猪狗不如。

交叉编译S2版本的tcpdump的过程,部分不重要的输出在此省略了。
我们是在虚拟机中来交叉编译的。

tcpdump是依赖于pcap包的,把下载好的两个源码包放在这个新建的目录下
[email protected]:/tmp/my$ ls
libpcap-1.7.4.tar.gz  tcpdump-4.7.4.tar.gz

解压这两个源码包
[email protected]:/tmp/my$ tar -xvf libpcap-1.7.4.tar.gz
[email protected]:/tmp/my$ tar -xvf tcpdump-4.7.4.tar.gz

解压完以后多了两个目录,如下
[email protected]:/tmp/my$ ls
libpcap-1.7.4  libpcap-1.7.4.tar.gz  tcpdump-4.7.4  tcpdump-4.7.4.tar.gz

先编译pcap库。
进入带目录中
[email protected]:/tmp/my$ cd libpcap-1.7.4/

因为S2的交叉编译链不再系统默认目录,所以这里把编译链的目录添加的PATH的最前面,这样编译的时候就能够找到正确的轿车编译链了。
[email protected]:/tmp/my/libpcap-1.7.4$ export PATH=/usr/local/linaro-multilib-2014.06-gcc4.9/bin:"$PATH"

再导出一个CC环境变量,指定编译器名称(有时候指定好编译链的目录,就不用这个了)
看了一下源码全部是C代码,所以只用指定C编译器就行了。
[email protected]:/tmp/my/libpcap-1.7.4$ export CC=arm-linux-gnueabihf-gcc

执行configure,指定如下参数
[email protected]:/tmp/my/libpcap-1.7.4$ ./configure --host=arm-linux-gnueabihf
......
configure: error: pcap type not determined when cross-compiling; use --with-pcap=...
上面报了一个错,上网查了一下,这个错关系,修改configure脚本让它不要检查这项了。

[email protected]:/tmp/my/libpcap-1.7.4$ vi configure
搜索到报错的那句话,注掉相关的if判断就行了。

再次执行configure,这次终于通过了
[email protected]:/tmp/my/libpcap-1.7.4$ ./configure --host=arm-linux-gnueabihf

执行make,进行正式编译
[email protected]:/tmp/my/libpcap-1.7.4$ make

看一下编译出来的库,静态库和动态库都生成了
[email protected]:/tmp/my/libpcap-1.7.4$ find -name "libpcap.*"
./libpcap.a
./libpcap.so.1.7.4


现在可以开始编译tcpdump了,先进入到目录中
[email protected]:/tmp/my/libpcap-1.7.4$ cd /tmp/my/tcpdump-4.7.4/

执行configure,依旧指定如下参数
[email protected]:/tmp/my/tcpdump-4.7.4$ ./configure --host=arm-linux-gnueabihf
......
checking for local pcap library... ../libpcap-1.7.4/libpcap.a
它自动的找到了刚才编译出来的pcap库,而且是静态库,这样将来生成的tcpdump就是单个文件,方便使用。

执行make,正式编译
[email protected]:/tmp/my/tcpdump-4.7.4$ make

看已经生成了,编译成功了。
[email protected]:/tmp/my/tcpdump-4.7.4$ ls tcpdump
tcpdump           tcpdump.1.in      tcpdump.o         

现在把他直接拷贝到S2相机上,可以用了,哈哈!

 

原创文章,转载请正确注明本文原始URL及作者;违反要求者猪狗不如。

以上是关于交叉编译tcpdump的主要内容,如果未能解决你的问题,请参考以下文章

如何优化C ++代码的以下片段 - 卷中的零交叉

Linux中tcpdump的编译和使用

tcpdump抓包按了Ctrl+C后依然没有停止抓包是为啥

tcpdump截帧工具使用

交叉编译和交叉调试环境搭建及使用

交叉编译概述