ये निर्देश मानते हैं कि आपके पास दास पर काम करने वाला क्रॉस-कंपाइलर है। कृपया पढ़ें कि क्रॉस-संकलन के लिए जीसीसी 4.7 टूलचैन का निर्माण कैसे करें? अगर तुम नहीं किया है make
मास्टर पर स्थापित होना भी उपयोगी है ।
स्थापना
सबसे पहले, हम स्थापित करना चाहिए distcc
। हम ऑपरेटिंग सिस्टम के पैकेज मैनेजमेंट सिस्टम द्वारा दिए गए प्रीबिल्ट पैकेज का उपयोग करेंगे, लेकिन यदि आप चाहें तो स्रोत से इंस्टॉल करने के लिए स्वतंत्र हैं!
डेबियन
sudo apt-get install distcc
मेहराब
sudo pacman -S distcc
विन्यास
दास - डेबियन / उबंटू
TODO: क्या यह आर्क के लिए समान है? यदि नहीं, तो हम आर्क को कैसे कॉन्फ़िगर करते हैं?
हमें इसमें सेटिंग्स समायोजित करने की आवश्यकता है /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
नोट दास पर distccd
उपयोक्ता उपयोगकर्ता के रूप में चल रहा होगा , इसलिए सुनिश्चित करें कि आपके निष्पादकों पर उपयुक्त अनुमतियाँ कॉन्फ़िगर की गई हैं; मैंने सभी को निष्पादित करने की अनुमति दी।
डेमॉन चलाएं - यह आमतौर पर बूट से शुरू किया जाएगा - रनिंग द्वारा
sudo service distcc start
मास्टर - आर्क
TODO: क्या यह डेबियन के लिए समान है? यदि नहीं, तो हम डेबियन को कैसे कॉन्फ़िगर करते हैं?
~/.distcc/hosts
अपने पसंदीदा पाठ संपादक में खोलें और दासों का आईपी पता जोड़ें। मेरी hosts
फ़ाइल में एक एकल पंक्ति है, जो पढ़ी गई है 192.168.0.22
।
नोट अपने दास के लिए एक स्थिर IP पता निर्दिष्ट करना एक अच्छा विचार हो सकता है, अन्यथा जब भी IP पता बदलता है, तो आपको इस फ़ाइल को बदलना होगा।
उपयोग
सब ठीक चल रहा है, आपको डिस्टेक का उपयोग करने में सक्षम होना चाहिए। उदाहरण के लिए, संकलन 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"
एक वितरित संकलन चलाएगा।
नोट प्रीप्रोसेसिंग और लिंकिंग अभी भी आरपीआई पर होता है।
डिबगिंग
इस कार्य को सही ढंग से करने में मुझे थोड़ा समय लगा, और मुझे जो सबसे अच्छा डिबगिंग टूल मिला वह एक साधारण पर्यावरण चर था। अगर तुम
export DISTCC_VERBOSE=1
distcc
उपयोगी जानकारी के ग्राहक इच्छा उत्पादन लोड होता है।
यह एक लंबी पोस्ट है, इसलिए किसी भी प्रतिक्रिया को कृतज्ञतापूर्वक प्राप्त किया जाएगा। मुझे आशा है कि मुझे सभी चरण याद हैं!