wide-dhcpv6 交叉编译

./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对比如下

wide-dhcpv6 交叉编译_第1张图片

 

这个问题浪费我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 status
Makefile: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。 简单记录一下

 

你可能感兴趣的:(嵌入式)