Distcc 介紹

Distcc 介紹

  • distcc是一個非常快且免費的分佈式C/C++編譯工具,distcc分爲兩個部分:
    1. distcc:distcc是一個類似客戶端的程序,不過它的角色是個編譯器,可以讓C/C++代碼在很多網絡服務器上進行分佈式的編譯,就像本地編譯一 樣,當然比本地編譯快很多。
    2. distccd:distccd是一個守護進程,每個網絡服務器上都需要安裝這個守護進程,用來處理distcc發送過來的各種計算資源。
    3. distccmon-text:distccmon-text是一個監控程序,用來監控編譯的分佈情況以及網絡服務器編譯使用情況。
  • 安裝了distcc後,所有的網絡服務器不需要掛載同樣一份文件系統,不需要服務器時間同步,也不要求同樣的庫文件或者頭文件,甚至服務器之間可以允許不 同的處理器和操作系統。

Distcc 簡單架構

distcc.png

Distcc 安裝

  • 在每臺空閒的網絡服務器上,下載distcc(目前到寫完這篇文章爲止,distcc最新版本爲2.18.3),解壓,編譯安裝如下:
  ~$ wget http://distcc.samba.org/ftp/distcc/distcc-2.18.3.tar.bz2
  ~$ tar -jxf distcc-2.18.3.tar.bz2
  ~$ cd distcc-2.18.3
  ~$ ./configure && make && sudo make install
  • 在上面安裝的distcc服務器上,啓動distcc的daemon進程,還可以通過--allow選項指定網關的訪問權限。
  ~$ sudo /usr/bin/distccd --daemon --allow 10.0.0.0/8 --user cnangel
  • 環境變量設置,在所有的安裝distcc的服務器上,執行:
  ~$ export DISTCC_HOSTS='10.20.137.1 10.20.137.2 10.20.137.3'

當然,爲了保持變量值,可以將上述語句放入到$HOME/.bash_profile當中,另外,可以根據自己愛好不同,指定如下變量:

  ~$ export CC=distcc
  ~$ export CXX="distcc g++"
  ~$ alias make="make -j 4" (一般最好爲服務器數的1.5倍最佳)
  • 最後,可以嘗試編譯自己的工程了。
  ~$ cd ~/works/myproject; ./configure ; make

是不是比平常快了很多呢! :)

小結

  • 具官方統計,在內核Linux2.4.19,單臺CPU 1700MHz Pentium IV的機器使用distcc(v0.15)花費了6分45秒,而使用distcc在三臺機器上(100Mbps)交叉編譯,時間花費2分鐘30秒,大概快 2.6倍左右 :)。
  • 一般來說,使用distcc節省了很多的編譯時間,對於編譯時間長的大工程來說,是一個不錯的選擇。
發佈了21 篇原創文章 · 獲贊 19 · 訪問量 87萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章