ubuntu下编译busybox失败的一种解决方法


    最近从澳门入手了部Motorola ROKR E6(OS内核是Linux的),就顺便研究了下该手机的交叉编译。
    途中,编译busybox的时候遇到了怪异的错误:

     GEN .depend
     /home/xxx/busybox-1.1.3/include/bbconfigopts.h:28 hmm, unterminated
     make[1]: *** [.depend] Erreur 1
     make: *** [_all] Erreur 2

    在网上查了一番资料,说是与ubuntu的兼容问题。并且有人提供了一种解决方案:

     Apaprently it's due to my ubuntu awk/sed version, here the solution in case someone
     else fall on the problem :

     in the file busybox-1.2.0/scripts/config/mkconfigs, I replaced
     echo "`sed 's//"//"/g' $config | grep "^#/? /?CONFIG_" | awk
     '{print "//"" $0 "n//"";}'`"
     by
     echo "`sed 's//"//"/g' $config | grep "^#/? /?CONFIG_" | awk
     '{print "//"" $0 "//"";}'`"

    我不清楚是1.1.3和1.2.0版本不同还是别的什么问题,以上方法在我的机器上依然不奏效。我只好大致看了下 scripts/config/mkconfigs、include/bbconfigopts.h和该工程的若干个Makefile,终于明白其实 bbconfigopts.h是在make busybox的时候(在make config之后)由shell脚本mkconfigs自动生成的,那么问题就变得明白了。

    用vi打开mkconfigs,找到第63行的:

     echo "static char const bbconfig_config[] ="
     echo "/"CONFIG_BEGIN=n//n//"
     echo "`sed 's//"//"/g' $config | grep "^#/? /?CONFIG_" | awk '{ print $0 "n" }' `"
     echo "CONFIG_END=n//n/";"
     echo "#endif /* _BBCONFIG_H */"

    改为:

     echo "static char const bbconfig_config[] ="
     echo "/"CONFIG_BEGIN=n///n/""
     echo "`sed 's//"//"/g' $config | grep "^#/? /?CONFIG_" | awk '{ print "//"" $0 "//"" }' `"
     echo "/"CONFIG_END=n///n/";"
     echo "#endif /* _BBCONFIG_H */"

    编译通过!
    记住,make之前要先make clean!

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值