一、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 plaincopy
  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 plaincopy
  1. ./distccmon-text 5

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

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

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

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

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

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

  1. 如何在Mac os X上搭建本地服务器环境

    之前苦于mac上搭建本地服务器之艰辛,找寻好久都没找到一款类似windows上集成的本地服务器环境,诸如phpstudy,xampp,appserv,虽说xampp也有mac版,但不知为何不是Apac ...

  2. distcc 链接失败_distcc分布式编译时,icu host程序偶现编译失败原因分析

    distcc分布式编译:将.c通过socket发送到其他电脑,其他电脑把.c编译成.o,然后再发送回来,在本地进行连接. icu:需要先编译host程序,然后使用host程序产生一些文件,再交叉编译出 ...

  3. hadoop启动_Mac OS X 上搭建 Hadoop 开发环境指南

    Hadoop 的配置有些麻烦,目前没有一键配置的功能,虽然当时我在安装过程中也参考了有关教程,但还是遇到了很多坑,一些老版本的安装过程已不适用于 hadoop2.x,下面就介绍一下具体步骤. 安装 J ...

  4. Mac OS X 上搭建 Hadoop 开发环境指南

    Hadoop 的配置有些麻烦,目前没有一键配置的功能,虽然当时我在安装过程中也参考了有关教程,但还是遇到了很多坑,一些老版本的安装过程已不适用于 hadoop2.x,下面就介绍一下具体步骤. 安装 J ...

  5. ubuntu20.10上搭建hadoop3.2.2伪分布式

    目录 1.准备环境 2.配置静态ip地址 3.安装jdk 4.修改主机名hostname和hosts 5.配置ssh免密登录 6.安装hadoop 7.搭建伪分布式 1.准备环境 1.Ubuntu20 ...

  6. 在x86服务器上 搭建基于docker的arm64程序编译和运行环境

    docker 镜像: multiarch/qemu-user-static:register arm64v8/ubuntu:18.04 必要的组件: qemu https://github.com/m ...

  7. 在Mac OS X上安装使用lazarus 1.6.4

    一直觉得delphi的OO做得比C++还完善, 但如今日落西真是让人感到唏嘘,  这并不意味着delphi比C++差, 它的创始人被微软挖墙脚后创造了C#系列开发工具, 设计理念大部分与Delphi相 ...

  8. [转] 在Mac上搭建React Native开发环境

    原文链接: http://blog.csdn.net/xiangzhihong8/article/details/53914336 概述 前面我们介绍过在window环境下开发React Native ...

  9. Mac OS X 10.8.3搭建Android工程源码的编译环境(解决找不到GCC、GIT、PYTHON的问题)...

    Mac OS X 10.8.3上搭建4.0以上android版本的编译环境只需要执行下面红色字体标注的操作: Setting up a Mac OS X build environment In a ...

最新文章

  1. Android APK反编译
  2. Win64 驱动内核编程-10.突破WIN7的PatchGuard
  3. Flash Builder4.7极其简单破解方法-三步搞定(亲测)
  4. MySQL 插入、更新、删除、简单检索
  5. 报告解读丨企服 9 大规模化获客标杆模型(附赠案例)
  6. Shiro集成SpringBoot时出现 not eligible for auto-proxying
  7. Java关键字synchronized详解
  8. 爬虫requests高阶篇详细教程
  9. UI设计实用临摹素材|APP设计的信息可视化!
  10. MFC中从一个类向其他类发送消息的方法
  11. 智能跳过节假日算法java_Quartz 定时任务使用 —— 排除指定节假日时间执行任务(十一)...
  12. 【第135期】游戏策划:给@蒙蒙水雾的简历分析
  13. 九大Java性能优化工具
  14. 计算机毕业设计ssm智能停车场管理系统
  15. ERP实施顾问职业所具备的知识和能力结构的几个建议
  16. 2021年CentOS7安装Oracle11g全记录
  17. echarts 图表不能占满全屏
  18. 在美国的电子工程师眼中的中国电子行业!
  19. 一个神奇的分布式计算框架:jini
  20. 各类积分对称性详细总结

热门文章

  1. 南大cssci期刊目录_最新版CSSCI来源期刊目录(2019-2020)及增减变化!【南大核心】...
  2. java liunx 日期格式化_java关于windows环境下显示日期格式正常,linux环境上异常的问题...
  3. python列表赋值 连续整数_Python_03_字符串_数据类型_for循环_列表操作
  4. java jni 结构体_JNI基础 -- C++基础知识(结构体共用体 )
  5. ajax 隔x秒发送一次,如何使用XAJAX和PHP编写实时聊天?
  6. 怎么查看linux日志里请求量最高的url访问最多的_LoaRunner性能测试系统学习教程:日志文件分析(8)...
  7. 基于python的分类模型_python SVM 线性分类模型的实现
  8. 状态机fsm_Verilog专题(三十二)101 Sequence Recognition Mealy FSM(101序列识别状态机)...
  9. c语言中0xof423什么意思,C语言指针 百思不得其解的一个问题
  10. Hadoop入门进阶步步高(六-Hadoop1.x与Hadoop2的区别