Chinaunix首页 | 论坛 | 博客
  • 博客访问: 583039
  • 博文数量: 199
  • 博客积分: 5087
  • 博客等级: 大校
  • 技术积分: 2165
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-26 21:53
文章存档

2010年(199)

我的朋友

分类: LINUX

2010-06-12 09:01:29

 
ARM平台的ppp-2.4.4交叉编译
Phenix 2007.04.30

交叉编译器 : arm-linux-gcc 3.3.2
     ppp版本 : both 2.4.4 and 2.4.3 are OK

     用arm-linux-gcc直接交叉编译ppp-2.4.1不会有啥问题,但是换成高版本的2.4.3或2.4.4就会出现错误,错误信息如下:
options.c:59:18: pcap.h: No such file or directory
options.c: In function `setpassfilter':
options.c:1458: error: `pcap_t' undeclared (first use in this function)
options.c:1458: error: (Each undeclared identifier is reported only once
options.c:1458: error: for each function it appears in.)
options.c:1458: error: `pc' undeclared (first use in this function)
options.c:1461: warning: implicit declaration of function `pcap_open_dead'
options.c:1461: error: `DLT_PPP' undeclared (first use in this function)
options.c:1462: warning: implicit declaration of function `pcap_compile'
options.c:1464: warning: implicit declaration of function `pcap_geterr'
options.c:1467: warning: implicit declaration of function `pcap_close'
options.c: In function `setactivefilter':
options.c:1479: error: `pcap_t' undeclared (first use in this function)
options.c:1479: error: `pc' undeclared (first use in this function)
options.c:1482: error: `DLT_PPP' undeclared (first use in this function)
options.c: At top level:
options.c:134: error: storage size of `pass_filter' isn't known
options.c:135: error: storage size of `active_filter' isn't known
make[1]: *** [options.o] 错误 1
make[1]: Leaving directory `/root/PhenixTest/ppp-2.4.4/pppd'
make: *** [all] 错误 2

     错误原因很明显,缺少了pcap.h这个头文件和相应的库!具体解决办法如下:
   
Step 1:交叉编译pcap

     这里具体怎样交叉编译pcap就不再重复了,如果遇到问题你可以参考一下本空间的《移植pcap库到Liod板》一文。生成的动态链接libpcap.so、libpcap.so.0、libpcap.so.0.9.4在/home/TestSuite/pcap_test(随便你放在哪个目录下,只要你在下面修
改Makefile时指定好路径就可以),将pcap.h、pcap-bpf.h和pcap-namedb.h这几个头文件放在/usr/local/include下(也可以
放在别的目录)

Step 2:修改ppp的Makefile

    先configure生成Makefile。从上面的错误信息得知是ppp-2.4.4/pppd/options.c中需要pcap库,因此修改pppd目录下的Makefile即可,具体修改如下:
   171        # modify by Phenix
   172     #ifdef FILTER
   173        #ifneq ($(wildcard /usr/include/pcap-bpf.h),)
   174        LIBS    += -lpcap
   175        #CFLAGS += -DPPP_FILTER
   176     CFLAGS += -DPPP_FILTER -I/usr/local/include -L/home/TestSuite/pcap_test #指定pcap的库路径和头文件的路径
   177       #endif
   178           #endif
  
Step 3:Make CC=arm-linux-gcc
    
    至此,ppp2.4.4已经交叉编译成功。ppp2.4.3的修改同此一样!下面就可以在ARM平台上进行拨号了。具体拨号过程可以参考本空间的《Liod平台的ppp拨号(linux)》一文。
     值得注意的是,最后要将libpcap.so、libpcap.so.0、libpcap.so.0.9.4拷贝到开发板的/lib下才能正确运行pppd程序。
阅读(2571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~