macint0sh

about me

RaspberryPi+distccd交叉编译

10 Jan 2013

RaspberryPi+distccd交叉编译

Raspberry+Server[s]:

#emerge -lv distcc
#nano /etc/conf.d/distccd           //编辑distcc配置文件//
    {
        ...
        DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.1.0/24"
        ...
    }
#rc-update add distccd default      //添加distccd到默认运行级别//
#rc-config start distccd            //启动distccd//

Raspberry:

#nano /etc/make.conf
    {
        ...
        FEATURES="distcc"
        ...
    }
    
#cd /usr/lib/distcc/bin 
#ls -l
    {    
    total 0
    c++ -> /usr/bin/distcc
    cc -> /usr/bin/distcc
    g++ -> /usr/bin/distcc
    gcc -> /usr/bin/distcc
    armv6j-hardfloat-linux-gnueabi-c++ -> /usr/bin/distcc
    armv6j-hardfloat-linux-gnueabi-g++ -> /usr/bin/distcc
    armv6j-hardfloat-linux-gnueabi-gcc -> /usr/bin/distcc
    }
    
#nano /usr/lib/distcc/bin/armv6j-hardfloat-linux-gnueabi-wrapper
    {
        #!/bin/bash
        exec /usr/lib/distcc/bin/armv6j-hardfloat-linux-gnueabi-g${0:$[-2]} "$@"
    }

#rm c++ g++ gcc cc 
#chmod a+x /usr/lib/distcc/bin/armv6j-hardfloat-linux-gnueabi-wrapper
#ln -s armv6j-hardfloat-linux-gnueabi-wrapper cc
#ln -s armv6j-hardfloat-linux-gnueabi-wrapper gcc
#ln -s armv6j-hardfloat-linux-gnueabi-wrapper g++
#ln -s armv6j-hardfloat-linux-gnueabi-wrapper c++

#ls -l
    {
    total 4
    armv6j-hardfloat-linux-gnueabi-c++ -> /usr/bin/distcc
    armv6j-hardfloat-linux-gnueabi-g++ -> /usr/bin/distcc
    armv6j-hardfloat-linux-gnueabi-gcc -> /usr/bin/distcc
    armv6j-hardfloat-linux-gnueabi-wrapper
    c++ -> armv6j-hardfloat-linux-gnueabi-wrapper
    cc -> armv6j-hardfloat-linux-gnueabi-wrapper
    g++ -> armv6j-hardfloat-linux-gnueabi-wrapper
    gcc -> armv6j-hardfloat-linux-gnueabi-wrapper
    }
    
#nano /usr/sbin/distcc-watch
    {
        #!/bin/bash
        # This script will only print non-blank results from distccmon-text N=1 # 1 sec
        while true; do
        task=`DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text`
        taskshort=`echo $task | tr -d ' '`
        len=${#taskshort}
        
        if [ $len -ne 0 ];then 
            echo "$task"
        fi

        sleep $N
        done
    }
    
#watch -n1 DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text

Server[s]:

#emerge -lv crossdev
#cd ~/bin
#nano con-profile2files.sh
    {
        #!/bin/bash
        PROFILE_DIR="/etc/portage"

        if [ ! -e ${PROFILE_DIR} ]; then
            mkdir ${PROFILE_DIR};
        fi;

        for PACK_DIR in package.keywords package.use package.unmask package.mask; do
        CUR_DIR="${PROFILE_DIR}/${PACK_DIR}"
        if [ ! -e ${CUR_DIR} ]; then
            mkdir ${CUR_DIR}
        fi

        if [ -e ${CUR_DIR} -a ! -d ${CUR_DIR} ]; then
            mv ${CUR_DIR} ${CUR_DIR}.moving
            mkdir ${CUR_DIR}
            mv ${CUR_DIR}.moving ${CUR_DIR}/monolithic
        fi
        done

        echo "Completed!"
    }
#crossdev -S -v -t armv6j-hardfloat-linux-gnueabi 
#=*=#CFLAGS="-O2 -pipe" CXXFLAGS="${CFLAGS}" crossdev -S -v -t armv6j-hardfloat-linux-gnueabi //上述出错时使用//