前段时间闲来无事,便试着把pcap移植到了PXA270的开发板,因为小弟是新手,居然让我给瞎折腾成功,所以比较兴奋,在此拿出来给大家分享一下:).以下是具体的操作步骤:
首先到http://www.tcpdump.org/上下载libpcap-0.9.1源代码 ,解压后进入目录,以下为具体的执行过程:
[root@olive libpcap-0.91]# ./configure --host=arm-linux
configure: error: pcap type not determined when cross-compiling; use --with-pcap=...
运行configure说交叉编译时没指定pcap类型,看了README文档,试了指定了几种类型,但configure时均出错!没办法了,只好采取暴力措施了,在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
.......
# if test $ac_cv_linux_vers = unknown ; then
# { { echo "$as_me:$LINENO: error: cannot determine linux version when cross-compiling" >&5
#echo "$as_me: error: cannot determine linux version when cross-compiling" >&2;}
# { (exit 1); exit 1; }; }
# fi
再次运行configure命令,这下终于OK!终于生成了Makefile.接下来make:
[root@olive libpcap-0.9.1]#make
居然没生成动态链接库,只有一个libpcap.a静态库.只好再修改它的Makefile.打开Makefile,找到了下面这个目标:
libpcap.so: $(OBJ)
@rm -f $@
ld -shared -o $@.`cat VERSION` $(OBJ)
注意把libpcap.so加入到all的依赖中,并把链接器ld该成arm-linux-ld,然后make
这样便生成了动态库libpcap.so.0.9.4,可样就可以将此拷贝到开发板的/lib/这个目录下,别忘了在再创建两个符号链接:
libpcap.so.0和libpcap.so.
利用pcap库提供的函数,写了个小测试程序pcapTest.测试OK,可以捕获网络数据包,终于大功告成!