Distcc je program, který rozloží kompilaci mezi několik strojů v síti.
Skládá se ze serveru,
Pokud plánujete použít distcc při instalaci Gentoo, přečtěte si prosím sekci
Abyste mohli používat distcc, musí mít všechny stroje v síti stejnou verzi GCC. Můžete míchat 3.3.x (kde je x rozdílné), ale nelze směšovat 3.3.x a 3.2.x, protože ve výsledných programech by byly chyby.
Je tu několik věcí, na které byste si před instalací distcc měli dát pozor.
Distcc je dodáváno s grafickou nadstavbou, která monitoruje, jaké části kódu, váš stroj posílá ke kompilaci ven. Pokud používáte GNOME, tak přidejte "gnome" do proměnné USE (v make.conf). Nepoužíváte-li jej a přesto chcete monitor používat, nastavte USE proměnnou "gtk".
# emerge distcc
Nastavení Portage je jednoduché. Stačí udělat následující kroky na každém systému, který se zúčastní distribuované kompilace:
# emerge distcc # nano -w /etc/make.conf(Zadej N podle své situace) (Obvykle počet všech CPU + 1) MAKEOPTS="-jN"(Přidejte distcc do proměnné FEATURES) FEATURES="distcc" (pozn. překladatele (distcc ccache …))
Použijte příkaz
192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.1/2 192.168.0.2 192.168.0.3/10 192.168.0.1:4000/2 192.168.0.2/1 192.168.0.3:3632/4 @192.168.0.1 @192.168.0.2:/usr/bin/distccd 192.168.0.3(Existuje ještě několik dalších metod, jak definovat seznam strojů; detaily viz manuálová stránka distcc.)
Zdá se to komplikované, ale ve většině případů budou fungovat varianty příkladů z první nebo druhé řádky.
I když většina lidí 3. a 4. řádku nepoužije, dovolujeme si Vás tímto
Např. použití první řádky z předchozího příkladu:
# /usr/bin/distcc-config --set-hosts "192.168.0.1 192.168.0.2 192.168.0.3"
Editujte podle potřeby
Nyní spusťte distcc démona na všech účastnících se strojích:
(Přidání distccd do runlevelu default) # rc-update add distccd default(Spuštění distcc démona) # /etc/init.d/distccd start
V některých případech je to jednodušší než nastavení Portage. Musíte jen
změnit proměnnou
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
Nyní již jen místo
Cross-kompilace znamená vytváření programů pro jednu architekturu pomocí stroje jiné architektury. Jednoduše můžete použít Athlon (i686) k výrobě programu pro K6-2 (i586) nebo použít SPARC k výrobě programu pro PPC.
Jestliže chcete cross-kompilaci vyzkoušet, měli byste se podívat na
Nabootujte váš stroj pomocí LiveCD Gentoo Linuxu a postupujte podle
# nano -w /etc/make.conf(Přidejte distcc do proměnné FEATURES) FEATURES="distcc"(Změňte MAKEOPTS tak, aby obsahovalo -jN, kde N nechť odpovídá vaší síti a strojům (N je celé číslo)) MAKEOPTS="-jN"
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
Před instalací distcc musíte přidat uživatele distcc do
# echo "distcc:x:240:2:distccd:/dev/null:/bin/false" >> /etc/passwd
Instalace distcc:
# USE='-*' emerge --nodeps sys-devel/distcc
K nastavení distcc spusťte
(Nahraďte host1, host2, ... IP adresami účastnících se strojů) # /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."Příklad: /usr/bin/distcc-config --set-hosts "localhost 192.168.0.4 192.168.0.6"
Distcc je teď připraven pro bootstrap! Můžete pokračovat v instalaci a řídit se
normální instalační příručkou a
Během instalace některých balíčků si možná všimnete, že některé z nich distcc nepoužívají, nejsou kompilovány paralelně. Je to tím, že vývojáři ebuildů Mozilly a Xfree tuto funkci zakázali, neboť se o ní ví, že způsobuje problémy.
Občas distcc způsobí pád kompilace. Když se vám to stane,
S takhle dlouhým titulkem je jakékoli vysvětlování skoro zbytečné. Zkrátka
jestliže plánujete použití distcc zároveň na strojích, které mají
Řešení vyžaduje jistý trik; na stroji s PaX/hardened-gcc potřebujete
spustit
Pokud máte na svých strojích různé verze GCC, budete mít divné potíže. Řešením je použití stejných verzí GCC na všech strojích.
Poslední verze Portage používají při kompilaci
Distcc je dodáván se dvěma monitory. První, textově orientovaný, se jmenuje
Druhý monitor je možné používat jen se zapnutou podporou
# distccmon-text N(nebo) # distccmon-gnomeKe sledování využití distcc Portagem, můžete použít: # DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N(nebo) # DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gnome