Przeczytałem Jak zbudować zestaw narzędzi GCC 4.7 do kompilacji krzyżowej? i pomyślnie zbudowałem prosty program testowy, który działa na moim RPi.
Aby to zrobić, musiałem uruchomić arm-unknown-linux-gnueabi-gcc hello.c -o hello
na moim pulpicie x86 i scp
pliku wykonywalnym mojego RPi. Jest to powolne i kłopotliwe. Wolę kontrolować kompilację z mojego RPi.
Przeczytałem o distcc
, które mogą być wykorzystane do dystrybucji kompilacji z jednej maszyny na drugą.
Jak to zainstalować? Mam zarówno komputery stacjonarne Debian / Ubuntu i Arch Linux, jak i oba systemy operacyjne zainstalowane na kartach SD.
debian
archlinux
cross-compilation
Alex Chamberlain
źródło
źródło
export DISTCC_VERBOSE=1
Dzięki za to ! Właśnie tego chcę debugować mój łańcuch narzędziowy distccOdpowiedzi:
Te instrukcje zakładają, że masz działający kompilator krzyżowy na urządzeniu slave. Przeczytaj: Jak zbudować zestaw narzędzi GCC 4.7 do kompilacji krzyżowej? jeśli nie. Przydatne jest również
make
zainstalowanie w systemie głównym.Instalacja
Najpierw musimy zainstalować
distcc
. Będziemy korzystać z gotowych pakietów dostarczonych przez systemy zarządzania pakietami systemów operacyjnych, ale możesz dowolnie instalować ze źródła, jeśli chcesz!Debian
Łuk
Konfiguracja
Slave - Debian / Ubuntu
Musimy dostosować ustawienia w
/etc/default/distcc
. W swoim ulubionym edytorze otwórz go jako root; Pobiegłemsudo vim /etc/default/distcc
.Trzeba zmienić
STARTDISTCC
,ALLOWEDNETS
iLISTENER
. Zakładając, że twój master i slave znajdują się w tej samej podsieci i ta podsieć jest192.168.0.0/24
, powinny być ustawione naPonadto należy dodać ścieżkę do kompilatora. Zrobiłem to, dodając następujący wiersz
Uruchom demona - normalnie byłby uruchamiany podczas rozruchu - przez uruchomienie
Mistrz - Arch
Otwórz
~/.distcc/hosts
w swoim ulubionym edytorze tekstu i dodaj adres IP urządzeń slave. Mójhosts
plik składał się z jednej linii, która czytała192.168.0.22
.Posługiwać się
Wszystko idzie dobrze, powinieneś móc używać distcc po prostu. Na przykład, aby skompilować
hello.c
dohello.o
ProwadzonyPrzykład: Hello World!
Ustawiłem prosty przykład w moim katalogu domowym, który składał się z 2 plików.
Uruchomienie
make hello
zostanie skompilowane lokalnie; powinieneś to zrobić jako szybki test. Dalej, poczekam.Uruchamianie
make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
uruchomi kompilację rozproszoną.Debugowanie
Zajęło mi trochę czasu, aby to działało poprawnie, a najlepszym narzędziem do debugowania , które znalazłem, była prosta zmienna środowiskowa. Jeśli ty
te
distcc
ładunki wyjście będzie klient przydatnych informacji.To długi post, więc każda informacja zwrotna byłaby wdzięczna. Mam nadzieję, że zapamiętałem wszystkie kroki!
źródło