คำแนะนำเหล่านี้ถือว่าคุณมีคอมไพเลอร์ข้ามการทำงานบนทาส โปรดอ่านวิธีการสร้าง toolchain GCC 4.7 สำหรับการคอมไพล์ข้าม? ถ้าคุณยังไม่ได้ นอกจากนี้ยังมีประโยชน์ในการmake
ติดตั้งบนต้นแบบ
การติดตั้ง
distcc
อันดับแรกเราต้องติดตั้ง เราจะใช้แพ็คเกจที่สร้างไว้ล่วงหน้าซึ่งจัดทำโดยระบบการจัดการแพ็คเกจของระบบปฏิบัติการ แต่คุณสามารถติดตั้งจากแหล่งที่มาได้ฟรีหากคุณต้องการ!
Debian
sudo apt-get install distcc
โค้ง
sudo pacman -S distcc
องค์ประกอบ
Slave - Debian / Ubuntu
สิ่งที่ต้องทำ: นี่เป็นสิ่งเดียวกันสำหรับ Arch หรือไม่ ถ้าไม่เราจะกำหนดค่า Arch อย่างไร
/etc/default/distcc
เราจำเป็นต้องปรับการตั้งค่าใน ในเครื่องมือแก้ไขที่คุณชื่นชอบเปิดเป็นรูท sudo vim /etc/default/distcc
ฉันวิ่ง
คุณจำเป็นต้องมีการเปลี่ยนแปลงSTARTDISTCC
, และALLOWEDNETS
LISTENER
สมมติว่าคุณมีเจ้านายและทาสของคุณอยู่ในซับเน็ตเดียวกันและซับเน็ตนั้น192.168.0.0/24
ควรตั้งค่าเป็น
STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"
นอกจากนี้คุณควรเพิ่มเส้นทางไปยังคอมไพเลอร์ของคุณ ฉันทำสิ่งนี้โดยเพิ่มบรรทัดต่อไปนี้
PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin
หมายเหตุ daemon บนสลาฟจะถูกเรียกใช้ในฐานะdistccd
ผู้ใช้ดังนั้นตรวจสอบให้แน่ใจว่ามีการกำหนดค่าการอนุญาตที่เหมาะสมในไฟล์ปฏิบัติการของคุณ ฉันให้สิทธิ์ทุกคนในการดำเนินการ
เรียกใช้ daemon - โดยปกติจะเริ่มตอนบูท - โดยเรียกใช้
sudo service distcc start
ปรมาจารย์ - อาร์ช
สิ่งที่ต้องทำ: นี่เป็นสิ่งเดียวกันสำหรับเดเบียนไหม ถ้าไม่เราจะกำหนดค่า Debian ได้อย่างไร
เปิด~/.distcc/hosts
ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบและเพิ่มที่อยู่ IP ของทาส ฉันแฟ้มประกอบด้วยบรรทัดเดียวที่อ่านhosts
192.168.0.22
หมายเหตุอาจเป็นความคิดที่ดีที่จะกำหนดที่อยู่ IP แบบคงที่ให้กับสลาฟของคุณไม่เช่นนั้นคุณจะต้องเปลี่ยนไฟล์นี้ทุกครั้งที่มีการเปลี่ยนแปลงที่อยู่ IP
ใช้
ทุกอย่างไปได้ด้วยดีคุณควรจะใช้ distcc ค่อนข้างง่าย ตัวอย่างเช่นในการรวบรวมhello.c
เพื่อhello.o
เรียกใช้
distcc arm-unknown-linux-gnueabi-gcc -c -o hello.o hello.c
ตัวอย่าง: สวัสดีชาวโลก!
ฉันตั้งค่าตัวอย่างง่ายๆในโฮมไดเร็กตอรี่ซึ่งประกอบด้วย 2 ไฟล์
# file: Makefile
hello.o: hello.c
hello: hello.o
# file: hello.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
วิ่งmake hello
จะรวบรวมในเครื่อง คุณควรทำสิ่งนี้เป็นแบบทดสอบด่วนก่อน ต่อไปฉันจะรอ
การรันmake hello CC="distcc arm-unknown-linux-gnueabi-gcc"
จะเรียกใช้การคอมไพล์แบบกระจาย
หมายเหตุการประมวลผลล่วงหน้าและการเชื่อมโยงยังคงเกิดขึ้นใน RPi
แก้จุดบกพร่อง
ฉันใช้เวลาสักครู่เพื่อให้ทำงานได้อย่างถูกต้องและเครื่องมือดีบั๊กที่ดีที่สุดที่ฉันพบคือตัวแปรสภาพแวดล้อมแบบง่าย ถ้าคุณ
export DISTCC_VERBOSE=1
distcc
โหลดลูกค้าประสงค์การส่งออกของข้อมูลที่เป็นประโยชน์
นี่คือการโพสต์ยาวดังนั้นข้อเสนอแนะใด ๆ จะได้รับสุดซึ้ง ฉันหวังว่าฉันจะจำทุกขั้นตอนได้!