码迷,mamicode.com
首页 > 系统相关 > 详细

【buildroot-2011.11】You may have to install 'g++' on your build machine

时间:2014-11-09 20:55:17      阅读:568      评论:0      收藏:0      [点我收藏+]

标签:buildroot

buildroot - 2011.11 交叉编译器制作时,提示如下错误:

“You may have to install ‘g++‘ on your build machine”

还提示:toolchain/dependencies/dependencies.sh 121 Error


打开toolchain/dependencies/dependencies.sh,有如下一段脚本

# check for host CXX
CXXCOMPILER=$(which $HOSTCXX 2> /dev/null)
if [ -z "$CXXCOMPILER" ] ; then
    CXXCOMPILER=$(which c++ 2> /dev/null)
fi
if [ -z "$CXXCOMPILER" ] ; then
    /bin/echo -e "\nYou may have to install 'g++' on your build machine\n"
    #exit 1
fi
if [ ! -z "$CXXCOMPILER" ] ; then
    CXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | sed -n '/^gcc version/p' |
        sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q')
    
    if [ -z "$CXXCOMPILER_VERSION" ] ; then
        /bin/echo -e "\nYou may have to install 'g++' on your build machine\n"
    fi

    CXXCOMPILER_MAJOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/\..*//g")
    CXXCOMPILER_MINOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/^$CXXCOMPILER_MAJOR\.//g" -e "s/\..*//g")
    if [ $CXXCOMPILER_MAJOR -lt 3 -o $CXXCOMPILER_MAJOR -eq 2 -a $CXXCOMPILER_MINOR -lt 95 ] ; then
        /bin/echo -e "\nYou have g++ '$CXXCOMPILER_VERSION' installed.  g++ >= 2.95 is required\n"
        exit 1
    fi
fi
有两个地方会打印“You may have to install ‘g++‘ on your build machine”,在这两个地方分别加入调试标记,发现是这里出问题了。

# check for host CXX
CXXCOMPILER=$(which $HOSTCXX 2> /dev/null)
if [ -z "$CXXCOMPILER" ] ; then
    CXXCOMPILER=$(which c++ 2> /dev/null)
fi
if [ -z "$CXXCOMPILER" ] ; then
    /bin/echo -e "\nYou may have to install ‘g++‘ on your build machine\n"
    #exit 1
fi
if [ ! -z "$CXXCOMPILER" ] ; then
    CXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | sed -n ‘/^gcc version/p‘ |
        sed -e ‘s/^gcc version \([0-9\.]\)/\1/g‘ -e ‘s/[-\ ].*//g‘ -e ‘1q‘)
    
    if [ -z "$CXXCOMPILER_VERSION" ] ; then
        /bin/echo -e "\nYou may have to install ‘g++‘ on your build machine\n"
    fi



    CXXCOMPILER_MAJOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/\..*//g")
    CXXCOMPILER_MINOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/^$CXXCOMPILER_MAJOR\.//g" -e "s/\..*//g")
    if [ $CXXCOMPILER_MAJOR -lt 3 -o $CXXCOMPILER_MAJOR -eq 2 -a $CXXCOMPILER_MINOR -lt 95 ] ; then
        /bin/echo -e "\nYou have g++ ‘$CXXCOMPILER_VERSION‘ installed.  g++ >= 2.95 is required\n"
        exit 1
    fi
fi

原来他没有检查出来,CXXCOMPILER_VERSION为空。方便起见,我直接输入命令:

c++ -v 2>&1 | sed -n ‘/^gcc version/p‘ | sed -e ‘s/^gcc version \([0-9\.]\)/\1/g‘ -e ‘s/[-\ ].*//g‘ -e ‘1q‘

得到C++的版本为:4.4.6

我就直接在CXXCOMPILER_VERSION的判断上面加一句:CXXCOMPILER_VERSION=4.4.6
然后make,直接通过。


OK,问题解决到此结束!

【buildroot-2011.11】You may have to install 'g++' on your build machine

标签:buildroot

原文地址:http://blog.csdn.net/ieczw/article/details/40952577

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!