wide-dhcpv6 交叉编译

来源:互联网 发布:ubuntu gnome 16.04 编辑:程序博客网 时间:2024/04/24 18:00

./configure CC=arm-none-linux-gnueabi-gcc --host=arm-linux --prefix=/某某路径

make

make install

不过编译没有这么顺利,出了一些问题。


百度一下,可以找到之前的相关文章,解决一些问题。 不过还是会有一些因人而异的不知道出在哪里的错误。 话不多说。

这个链接解决我的前两个问题。

http://blog.sina.com.cn/s/blog_604a4ace0102vnt3.html


make的过程中,因为没有提前安装flex和bison,所以生成的Makefile文件也是错误的。前后生成的Makefile对比如下



这个问题浪费我2个小时去不停的百度。

在安装好bison和flex 后,sudo apt-get install flex bison,后才编译正常。


然后出现第二个问题

cftoken.o: In function `yylex':/mnt/hgfs/trunk_code/testcode/wide-dhcpv6-20080615_2/lex.yy.c:1802: undefined reference to `yywrap'collect2: ld returned 1 exit statusMakefile:70: recipe for target 'dhcp6s' failed

网上的统一回复是,如链接 http://www.cppblog.com/ngaut/archive/2006/07/05/9450.html

可以在lex.c加入如下的行来解决问题。
#define yywrap()  1

更好的办法是定义:
int yywrap() 

   return(1); 

或者是 http://www.xuebuyuan.com/913829.html

解决的办法:在cscanner.c中,直接增加函数:yywrap的定义如下:

int yywrap()

{

   return 1;

}


我这边没有找到cscanner.c,然后又不清楚把yywrap具体加到哪里,就采用方法一,吧原来安装的flex给卸载了,命令 sudo apt-get purge flex

然后去编译flex2.5.4.tar.gz。 最后试了一通,还是不行。


后续又看了下日志,还是在cftoken.c 中找到了vvwrap的函数,同时也在这个文件里,加上了上面的定义。 编译出来了dhcp6c。 简单记录一下


原创粉丝点击