Distcc nasıl kurulur?


10

Okudum çapraz derleme için bir GCC 4.7 toolchain inşa etmek nasıl? ve RPi üzerinde çalışan basit bir test programı başarıyla oluşturduk.

Bunu yapmak için, arm-unknown-linux-gnueabi-gcc hello.c -o hellox86 masaüstümde ve scpçalıştırılabilirim RPi'ye çalıştırmak zorunda kaldım. Bu yavaş ve bir güçlük. Derlemeyi RPi'mden kontrol etmeyi tercih ederim.

distccDerlemeyi bir makineden diğerine dağıtmak için kullanılabilecek hakkında okudum .

Bunu nasıl kurarım? Hem Debian / Ubuntu hem de Arch Linux masaüstü bilgisayarlarım ve her iki işletim sistemi de SD kartlarda yüklü.


Bu soruyu göndermem için ben olmayan birini bekliyordum. Gerçekten yapmak istemedim. İyi iş.
Jivings

export DISTCC_VERBOSE=1Bunun için teşekkürler ! Benim distcc araç zincirini hata ayıklamak için aradığım şey

Yanıtlar:


12

Bu talimatlar, slave üzerinde çalışan bir derleyici bulunduğunu varsayar. Lütfen okuyun çapraz derleme için bir GCC 4.7 toolchain inşa etmek nasıl? eğer yapmadıysanız. makeMaster üzerine kurulmuş olması da yararlıdır .

Kurulum

İlk olarak, yüklemeliyiz distcc. İşletim sistemlerinin paket yönetim sistemleri tarafından sağlanan önceden oluşturulmuş paketleri kullanacağız, ancak isterseniz kaynaktan yükleme yapmakta özgürsünüz!

Debian

sudo apt-get install distcc

kemer

sudo pacman -S distcc

Yapılandırma

Köle - Debian / Ubuntu

YAPILACAKLAR: Arch için de aynı şey geçerli mi? Değilse Arch'ı nasıl yapılandırabiliriz?

İçindeki ayarları yapmamız gerekiyor /etc/default/distcc. Favori düzenleyicinizde kök olarak açın; Koştum sudo vim /etc/default/distcc.

Sen değişikliğine ihtiyaç STARTDISTCC, ALLOWEDNETSve LISTENER. Master ve slave'inizin aynı alt ağda olduğunu ve bu alt ağın olduğunu varsayarsak 192.168.0.0/24,

STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"

Ayrıca, yolu derleyicinize eklemeniz gerekir. Bunu aşağıdaki satırı ekleyerek yaptım

PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin

Not Slave'deki arka plan programı distccdkullanıcı olarak çalışacaktır , bu nedenle yürütülebilir dosyalarınızda uygun izinlerin yapılandırıldığından emin olun; Herkese infaz izni verdim.

Arka plan programını çalıştırın - normalde önyükleme sırasında başlatılır -

sudo service distcc start

Master - Kemer

YAPILACAKLAR: Bu Debian için aynı mı? Değilse, Debian'ı nasıl yapılandırabiliriz?

~/.distcc/hostsEn sevdiğiniz metin düzenleyicide açın ve Kölelerin IP adresini ekleyin. Dosyam hosts, okunan tek bir satırdan oluşuyordu 192.168.0.22.

Not Slave'inize statik bir IP adresi atamak iyi bir fikir olabilir, aksi takdirde IP adresi her değiştiğinde bu dosyayı değiştirmeniz gerekecektir.

kullanım

Her şey yolunda giderse, distcc'yi oldukça basit bir şekilde kullanabilmelisiniz. Örneğin, derlemek hello.ciçin hello.o, çalışma

distcc arm-unknown-linux-gnueabi-gcc    -c -o hello.o hello.c

Örnek: Merhaba Dünya!

Ana dizinde 2 dosyadan oluşan basit bir örnek oluşturdum.

# file: Makefile
hello.o: hello.c
hello: hello.o

# file: hello.c
#include <stdio.h>

int main() {
  printf("Hello World!\n");
  return 0;
}

Koşu make helloyerel olarak derlenecektir; bunu önce hızlı bir test olarak yapmalısınız. Devam et, bekleyeceğim.

Koşu make hello CC="distcc arm-unknown-linux-gnueabi-gcc"dağıtılmış bir derleme çalıştıracaktır.

Not Önişleme ve bağlantı RPi'de hala gerçekleşir.

Hata ayıklama

Bunun doğru bir şekilde çalışması biraz zaman aldı ve bulduğum en iyi hata ayıklama aracı basit bir ortam değişkeniydi. Eğer sen

export DISTCC_VERBOSE=1

distccyararlı bilgi istemci irade çıkış yükleri.

Bu uzun bir gönderi, bu nedenle herhangi bir geri bildirim minnetle alınır. Umarım tüm adımları hatırlarım!


Mükemmel cevap. RPi gelişimim için bunu işaretleyeceğim.
Jivings

@AlexChamberlain Distcc artık ön işlemeyi de dağıtmasına izin veren "pompa modunu" desteklemektedir.
teraquendya

@teraquendya Gerçekten de öyle, henüz bununla ilgili ayrıntılar yayınlamak için etrafımda bir şey yok. Önce pompa modu olmadan her şeyin doğru olduğundan emin olmak istiyorum.
Alex Chamberlain
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.