Các hướng dẫn này giả sử bạn có một trình biên dịch chéo làm việc trên nô lệ. Vui lòng đọc Làm thế nào để xây dựng một chuỗi công cụ GCC 4.7 để biên dịch chéo? nếu bạn không Nó cũng hữu ích để makecài đặt trên bản gốc.
Cài đặt
Đầu tiên, chúng ta phải cài đặt distcc. Chúng tôi sẽ sử dụng các gói dựng sẵn được cung cấp bởi hệ thống quản lý gói của hệ điều hành, nhưng bạn có thể tự do cài đặt từ nguồn nếu bạn muốn!
Debian
sudo apt-get install distcc
Cổng vòm
sudo pacman -S distcc
Cấu hình
Nô lệ - Debian / Ubuntu
TODO: Điều này có giống với Arch không? Nếu không, làm thế nào để chúng ta cấu hình Arch?
Chúng ta cần điều chỉnh các cài đặt trong /etc/default/distcc. Trong trình soạn thảo yêu thích của bạn, mở nó dưới quyền root; Tôi chạy sudo vim /etc/default/distcc.
Bạn cần thay đổi STARTDISTCC, ALLOWEDNETSvà LISTENER. Giả sử bạn có chủ và nô lệ của bạn ở trên cùng một mạng con và mạng con đó là 192.168.0.0/24, chúng nên được đặt thành
STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"
Hơn nữa, bạn nên thêm đường dẫn vào trình biên dịch của bạn. Tôi đã làm điều này bằng cách thêm dòng sau
PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin
Lưu ý Trình nền trên nô lệ sẽ chạy với tư cách distccdngười dùng, vì vậy hãy đảm bảo các quyền phù hợp được cấu hình trên các tệp thực thi của bạn; Tôi đã cho phép mọi người thực thi.
Chạy trình nền - nó thường được khởi động khi khởi động - bằng cách chạy
sudo service distcc start
Thầy - Arch
TODO: Điều này có giống với Debian không? Nếu không, làm cách nào để cấu hình Debian?
Mở ~/.distcc/hoststrong trình soạn thảo văn bản yêu thích của bạn và thêm địa chỉ IP của nô lệ. hostsTập tin của tôi bao gồm một dòng duy nhất, đọc 192.168.0.22.
Lưu ý Có thể nên gán địa chỉ IP tĩnh cho nô lệ của bạn, nếu không bạn sẽ phải thay đổi tệp này bất cứ khi nào địa chỉ IP thay đổi.
Sử dụng
Mọi việc suôn sẻ, bạn sẽ có thể sử dụng distcc khá đơn giản. Ví dụ, để biên dịch hello.cđể hello.o, chạy
distcc arm-unknown-linux-gnueabi-gcc -c -o hello.o hello.c
Ví dụ: Xin chào thế giới!
Tôi thiết lập một ví dụ đơn giản trong thư mục nhà của tôi, bao gồm 2 tệp.
# file: Makefile
hello.o: hello.c
hello: hello.o
# file: hello.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
Chạy make hellosẽ biên dịch cục bộ; bạn nên làm điều này như một bài kiểm tra nhanh trước. Tiếp tục, tôi sẽ đợi.
Chạy make hello CC="distcc arm-unknown-linux-gnueabi-gcc"sẽ chạy một trình biên dịch phân tán.
Lưu ý Quá trình tiền xử lý và liên kết vẫn xảy ra trên RPi.
Gỡ lỗi
Phải mất một thời gian để nó hoạt động chính xác và công cụ sửa lỗi tốt nhất tôi tìm thấy là một biến môi trường đơn giản. nếu bạn
export DISTCC_VERBOSE=1
các distcckhách hàng sẽ đầu ra vô số thông tin hữu ích.
Đây là một bài viết dài, vì vậy bất kỳ thông tin phản hồi sẽ được nhận biết ơn. Tôi hy vọng tôi nhớ tất cả các bước!