这些说明假定您在从站上有一个可以正常工作的交叉编译器。请阅读如何构建GCC 4.7工具链进行交叉编译?如果还没有。make
安装在主服务器上也很有用。
安装
首先,我们必须安装distcc
。我们将使用操作系统的程序包管理系统提供的预编译程序包,但如果需要,您可以自由从源代码进行安装!
德比安
sudo apt-get install distcc
拱
sudo pacman -S distcc
组态
奴隶-Debian / Ubuntu
TODO:Arch也是这样吗?如果没有,我们如何配置Arch?
我们需要调整中的设置/etc/default/distcc
。在您喜欢的编辑器中,以根用户身份打开它;我跑了sudo vim /etc/default/distcc
。
您需要更改STARTDISTCC
,ALLOWEDNETS
并且LISTENER
。假设您的主服务器和从服务器位于同一子网中,并且该子网位于192.168.0.0/24
,则应将它们设置为
STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"
此外,您应该将路径添加到编译器。我通过添加以下行来做到这一点
PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin
注意从属服务器上的守护程序将以distccd
用户身份运行,因此请确保在可执行文件上配置了适当的权限。我允许所有人执行。
运行以下守护程序-通常在启动时启动该守护程序
sudo service distcc start
大师-拱门
TODO:Debian也一样吗?如果没有,我们如何配置Debian?
~/.distcc/hosts
在您喜欢的文本编辑器中打开并添加从站的IP地址。我的hosts
文件只有一行,显示为192.168.0.22
。
注意为您的从站分配一个静态IP地址可能是一个好主意,否则,只要IP地址更改,就必须更改此文件。
采用
一切顺利,您应该能够非常简单地使用distcc。例如,编译hello.c
为hello.o
,运行
distcc arm-unknown-linux-gnueabi-gcc -c -o hello.o hello.c
示例:世界您好!
我在主目录中设置了一个简单的示例,该示例包含2个文件。
# file: Makefile
hello.o: hello.c
hello: hello.o
# file: hello.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
运行make hello
将在本地编译;您应该首先将其作为快速测试。继续,我等。
运行make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
将运行分布式编译。
注意预处理和链接仍在RPi上进行。
调试
我花了一些时间才能正常工作,而我发现最好的调试工具是一个简单的环境变量。如果你
export DISTCC_VERBOSE=1
将distcc
有用的信息客户端将输出负载。
这是一篇很长的文章,所以将不胜感激收到任何反馈。我希望我记得所有步骤!