Làm thế nào để tôi cài đặt distcc?


10

Tôi đã đọ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? và đã xây dựng thành công một chương trình thử nghiệm đơn giản hoạt động trên RPi của tôi.

Để làm điều này, tôi phải chạy arm-unknown-linux-gnueabi-gcc hello.c -o hellotrên máy tính để bàn x86 của tôi và scpthực thi cho RPi của tôi. Điều này là chậm và rắc rối. Tôi thà kiểm soát việc biên dịch từ RPi của tôi.

Tôi đã đọc về distcc, có thể được sử dụng để phân phối việc biên dịch từ máy này sang máy khác.

Làm thế nào để tôi cài đặt này? Tôi có cả máy tính để bàn Debian / Ubuntu và Arch Linux và cả hai hệ điều hành được cài đặt trên thẻ SD.


Tôi đã chờ đợi một người không phải tôi đăng câu hỏi này. Tôi thực sự không muốn làm điều đó. Công việc tốt đẹp.
Jivings

export DISTCC_VERBOSE=1Cảm ơn vì điều đó ! Đó là những gì tôi đang tìm kiếm để gỡ lỗi chuỗi công cụ distcc của tôi

Câu trả lời:


12

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, ALLOWEDNETSLISTENER. 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!


Câu trả lời tuyệt vời. Tôi sẽ đánh dấu trang này để phát triển RPi của tôi.
Jivings

@AlexChamberlain Distcc hiện hỗ trợ "chế độ bơm" cho phép nó cũng phân phối tiền xử lý.
teraquendya

@teraquendya Họ thực sự, tôi đã không có xung quanh để đăng chi tiết về điều này chưa. Tôi muốn chắc chắn rằng tôi đã có mọi thứ ngay lập tức mà không cần chế độ bơm.
Alex Chamberlain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.