树莓派编译软件比较慢,最好用交叉编译的方法来加速编译过程。下面在安装了Debian 7.0的VPS上配置交叉编译环境,用于辅助树莓派编译软件包。
客户端配置
下面的操作均在Debian x86_64上执行,需要配置交叉编译工具链和Distcc客户端
使用预构建工具链
可以直接下载Arch Linux ARM团队使用的工具链
ARMv6l toolcanin (9cbdc2c73f8065b189c12b8c0bb400bc)
自行构建
编译安装crosstool-ng
安装编译crosstool-ng所需要的软件包
sudo apt-get install gperf bison flex texinfo gawk libtool automake libncurses5-dev
获取源代码并编译
mkdir -p cross/src
cd cross
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.19.0.tar.bz2
tar -xjf crosstool-ng-1.19.0.tar.bz2
cd crosstool-ng-1.19.0/
./configure --prefix=/home/your_user/cross
make
make install
获取交叉编译工具配置
cd /home/your_user/cross/bin
# 树莓派是ARMv6架构
wget wget http://archlinuxarm.org/mirror/development/ct-ng/xtools-dotconfig-v6 -O .config
构建交叉编译工具
cd /home/your_user/cross/bin
./ct-ng -j32 build
编译过程很费时,并且需要5~10GB的硬盘空间
重命名文件
#!/usr/bin/env bash
cd /home/puxx/x-tools6h/arm-unknown-linux-gnueabihf/bin/
for file in $(ls) ; do
if [[ "${file}" == "link" ]]; then
continue
fi
ln -s $file ${file#arm-unknown-linux-gnueabihf-}
ln -s $file armv6l-unknown-linux-gnueabihf-${file#arm-unknown-linux-gnueabihf-}
done
配置distcc
安装distcc
sudo apt-get install distcc
编辑/etc/init.d/distcc
PATH=/home/puxx/x-tools6h/arm-unknown-linux-gnueabihf/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
编辑/etc/default/distcc
STARTDISTCC="true"
ALLOWEDNETS="****" # 填上树莓派的IP地址
启动distcc
sudo service distcc start
主机配置
下面的操作在树莓派上执行
安装distcc
sudo pacman -S distcc
编辑/etc/distcc/hosts
**** # 填上Debian VPS的IP地址或主机名
配置makepkg
编辑/etc/makepkg.conf
MAKEFLAGS=-j32
BUILDENV=(fakeroot distcc color !ccache check !sign)
DISTCC_HOSTS="****" # 填上Debian VPS的IP地址或主机名
完成
以后在树莓派上使用makepkg编译软件包机会自动启用distcc分布式编译了