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. make
Master ü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
, ALLOWEDNETS
ve 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ı distccd
kullanı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/hosts
En 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.c
iç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 hello
yerel 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
distcc
yararlı 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!