OS X上搭建distcc使用XCode进行分布式编译

一、distcc介绍

distcc是google的一个开源工具,它不是一个编译器,而是一个负责调度不同设备上的编译器,从而实现分布式编译的工具。

官网 https://code.google.com/p/distcc/

 

传统的编译过程可以划分为以下部分:

1)     预处理 - preprocess

2)     编译  - compile

3)     链接  - link

 

在distcc的流程中,“编译- compile”部分会在其他机器进行,而剩余部分仍然在本机进行。


二、distcc for XCode搭建

由于为XCode新建一个编译器选项以及修改工程更换编译器十分繁琐,所以我决定采用修改XCode默认编译配置的方式来让XCode使用上distcc。

为此,我写了一些脚本用于进行快速配置。

Git地址如下

[plain]  view plain copy
  1. git clone https://github.com/zqxiaojin/distccForXCode.git  

 

脚本说明:

1)        checkout_patch.sh。获取disticc源代码并且打补丁。补丁是为了让其适配XCode编译器Clang

2)        makeInstall.sh。编译distcc并且将其ln 到XCode编译器目录

3)        fakeLLVM.sh。将XCode默认的编译器更换为distcc

4)        restoreLLVM.sh。将XCode默认的编译器恢复为clang

5)        runServer.sh。运行distcc服务器,脚步中默认允许部分IP进行访问,请根据自己实际情况进行配置。

  

distcc可以既让机器作为client同时作为server进行使用。但我目前使用的场景只是让部分机器仅仅作为server使用。

 

三、配置和测试

1)     server配置允许的访问的IP段。修改请参考runServer.sh脚本和编译出来的distccd --help。

2)     client配置host列表。可在~/.distcc/hosts或/usr/local/etc/distcc/hosts添加sever的服务器地址。参见distcc –help。

3)     检测编译统计。在server启动后,可以访问其3633端口获取统计信息,如本机运行作为server后访问http://127.0.0.1:3633/ 可查看到当前统计情况。


4)     实时检察本机分布式编译情况。使用以下命令可定时检查当前情况:

[plain]  view plain copy
  1. ./distccmon-text 5  

5)     修改XCodeBuild 的并行任务数。通过添加参数–jobs 8 即可修改。

6)     修改XCode IDE的编译任务数。在命令行执行以下内容:

[plain]  view plain copy
  1. defaults write com.apple.dt XCodeIDEBuildOperationMaxNumberOfConcurrentCompileTasks 8  

7)     检查是否已经使用distcc。在执行了fakeLLVM后,可以通过XCode编译时的脚本观察到当前是否已经使用distcc,如下图:

 


  



最后要补充一点:为了确保编译结果正确率较高,server和client应该使用相同版本的编译器。

你可能感兴趣的:(OS X上搭建distcc使用XCode进行分布式编译)