搭建distcc分布式編譯Android原始碼

2021-06-09 12:16:49 字數 2584 閱讀 9734

**:

distcc 在日常工作中常為我們使用來

解決大型

專案在單一工作站上

編譯較慢的問題

。其主要用於對 c, object c 以及 c++ 

**進行並行編譯,將可以並行的編譯任務分布於編譯集群中的各個工作站,有效利用各機器資源,達到整體編譯效能的成倍提公升。

在類 unix 

系統上,distcc 使用 sendfile 系統呼叫在不同工作節點之間傳送

檔案,儘管這種

網路檔案傳輸會占用一定的時間,他們對工作機的 cpu 資源占用卻很小,而且這種分發任務的方式能夠簡化構建

環境的配置,distcc 在這方面同早期的一些基於共享

檔案系統

的分布編譯環境 (dmake, pvmmake 等等 ) 相比幾乎

是0 配置。

distcc 對各個編譯節點的本地系統庫及標頭檔案基本沒有要求,即使在不同的節點上這些元件的版本不同也不會影響到最終編譯結果的正確性,實際情況是 distcc 會在本地 (client 機 ) 完成存在版本依賴的編譯任務,這一點的實現

原理簡要說來式因為 distcc 借助了 c/c++ 編譯

驅動程式

的以下特點:

1. cpp(c 預

處理器) [cpp [arguments] .c 原始檔輸入 .i 中間檔案輸出 ]

2. ccl(c 編譯器 ) [ccl .i 中間檔案輸入 .c 原始檔輸入 [arguments] –o .s 彙編檔案輸出 ]

3. as( 彙編器 ) [as [arguments] –o .o 目標檔案輸出 .s 彙編檔案輸入 ]

這個在本地做過預處理的 ascii 原始檔及其他

命令列選項即可唯一確定乙個目標檔案,而與此任務在哪台機器上

執行無關,通過分發這種任務到各個節點,即可消除對頭檔案的依賴。同理 distcc 通過在任務的分發節點做鏈結來消除對庫檔案的依賴。

參考以下資訊。

搭建分布式編譯器的機器有兩台,

安裝ubuntu9.04

作業系統

,ip位址分別是192.168.0.222(a),192.168.0.111(b)。兩台機器上都有arm-eabi-4.4.0編譯器(可以從/android/prebuilt/toolchain/

目錄下copy),放在目錄/usr/local/下。a機器提供編譯服務,b機器作為客戶端

1. server和client端都要做的操作:

1)首先確認server和client上都安裝了distcc

sudo apt-get install distcc

安裝distcc圖形介面監測程式(不是必須)

apt-get install distccmon-gnome

2)設定編譯器路徑到系統path中:

export path=/usr/local/arm-eabi-4.4.0/bin

可以把此命令新增到~/.bashrc指令碼中,這樣每次啟動都自動設定好了。

3)sudo vi /etc/default/distcc

修改startdistcc的值為true。

startdistcc="true"

在a(server)上,

修改 allowednets

="192.168.0.0/16"

listener

="192.168.0.215" (server的ip)

在b(client)上,不修改以上allowednets和listener的值。

其中allowednets採用了cidr位址規則,在這裡,192.168.0.0/16表示只要前16位為192.168的合法ip位址都可以請求編譯服務。

針對b機器,由於不對外提供編譯服務,所以只要將startdistcc設為true即可。

4)sudo vi /etc/init.d/distcc

將/usr/local/arm-eabi-4.4.0/bin新增到distcc的

path變數

中。5)在/usr/lib/distcc中建立distcc的軟鏈結

a、b機器作相同的操作

cd /usr/lib/distcc

sudo ln –s ../../bin/distcc arm-eabi-

gccsudo ln –s ../../bin/distcc arm-eabi-g++

…/usr/local/arm-eabi-4.4.0/bin/下面的所有編譯

工具都要作到/usr/lib/distcc目錄下相應的鏈結。

2. 另外在client需要完成:

export path=/usr/lib/distcc

要保證/usr/lib/distcc

在系統path的最前面

。export distcc_hosts

=」192.168.0.222 192.168.0.211」 (可新增多個server的ip)

3. server重啟distcc服務

sudo /etc/init.d/distcc restart (此步驟只需在server端執行,client端並不啟動distcc服務)

之後,在client上開始編譯android原始碼,可用distccmon-gnome來監視編譯過程。

搭建distcc分布式編譯環境

簡介distcc 在日常工作中常為我們使用來解決大型專案在單一工作站上編譯較慢的問題。其主要用於對 c,object c 以及 c 進行並行編譯,將可以並行的編譯任務分布於編譯集群中的各個工作站,有效利用各機器資源,達到整體編譯效能的成倍提公升。在類 unix 系統上,distcc 使用 sendf...

Distcc(分布式編譯)(方法1)

伺服器端 計算機名為 zhimingubtpc.local sudo apt get install distcc sudo vi etc default distcc 按a或i進入編輯模式 startdistcc true 預設為false allowednets 127.0.0.1 10.0.1...

分布式編譯

這是乙個對應visual c 的分布式編譯軟體,通過visual c 強大的ide擴充套件功能,它有著非常友好的介面,可以將整個分布式編譯過程直觀的展現給使用者,並且它通過乙個 虛擬機器 的技術,使能編譯的參與者可以與編譯發起者有著不同的系統配置 windows作業系統版本,庫檔案等 甚至無需在參與...