Instruksi ini menganggap Anda memiliki cross-compiler yang berfungsi pada slave. Baca Cara membuat GCC 4.7 toolchain untuk kompilasi silang? jika belum. Juga berguna untuk make
menginstal pada master.
Instalasi
Pertama, kita harus menginstal distcc
. Kami akan menggunakan paket prebuilt yang disediakan oleh sistem manajemen paket sistem operasi, tetapi Anda bebas untuk menginstal dari sumber jika Anda mau!
Debian
sudo apt-get install distcc
Lengkungan
sudo pacman -S distcc
Konfigurasi
Budak - Debian / Ubuntu
TODO: Apakah ini sama dengan Arch? Jika tidak, bagaimana cara mengkonfigurasi Arch?
Kita perlu menyesuaikan pengaturan di /etc/default/distcc
. Di editor favorit Anda, buka sebagai root; Saya berlari sudo vim /etc/default/distcc
.
Anda perlu berubah STARTDISTCC
, ALLOWEDNETS
dan LISTENER
. Dengan asumsi Anda memiliki master dan slave Anda berada di subnet yang sama dan subnet itu 192.168.0.0/24
, mereka harus diatur ke
STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"
Selanjutnya, Anda harus menambahkan path ke kompiler Anda. Saya melakukan ini dengan menambahkan baris berikut
PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin
Catatan Daemon pada slave akan berjalan sebagai distccd
pengguna, jadi pastikan izin yang sesuai dikonfigurasi pada executable Anda; Saya memberi semua orang izin untuk mengeksekusi.
Jalankan daemon - biasanya akan dimulai saat boot - dengan menjalankan
sudo service distcc start
Master - Arch
TODO: Apakah ini sama untuk Debian? Jika tidak, bagaimana kami mengonfigurasi Debian?
Buka ~/.distcc/hosts
di editor teks favorit Anda dan tambahkan alamat IP dari Budak. hosts
File saya terdiri dari satu baris, yang bertuliskan 192.168.0.22
.
Catatan Mungkin ide yang baik untuk menetapkan alamat IP statis ke budak Anda, jika tidak, Anda harus mengubah file ini setiap kali alamat IP berubah.
Menggunakan
Semua berjalan dengan baik, Anda harus dapat menggunakan distcc dengan cukup sederhana. Misalnya, untuk mengkompilasi hello.c
ke hello.o
, run
distcc arm-unknown-linux-gnueabi-gcc -c -o hello.o hello.c
Contoh: Hello World!
Saya membuat contoh sederhana di direktori home saya, yang terdiri dari 2 file.
# file: Makefile
hello.o: hello.c
hello: hello.o
# file: hello.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
Menjalankan make hello
akan dikompilasi secara lokal; Anda harus melakukan ini sebagai tes cepat terlebih dahulu. Ayo, aku akan menunggu.
Menjalankan make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
akan menjalankan kompilasi yang didistribusikan.
Catatan Preprocessing dan penautan masih terjadi pada RPi.
Debugging
Butuh beberapa saat untuk menjalankannya dengan benar, dan alat debugging terbaik yang saya temukan adalah variabel lingkungan yang sederhana. Jika kamu
export DISTCC_VERBOSE=1
yang distcc
keluaran klien akan banyak informasi yang berguna.
Ini adalah posting yang panjang, jadi umpan balik apa pun akan diterima dengan penuh rasa syukur. Saya harap saya ingat semua langkah!