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 để make
cà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
, ALLOWEDNETS
và 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 distccd
ngườ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/hosts
trong 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ệ. hosts
Tậ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 hello
sẽ 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 distcc
khá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!