मैं डिस्टेक कैसे स्थापित करूं?


10

मैंने पढ़ा है कि क्रॉस-संकलन के लिए जीसीसी 4.7 टूलचैन का निर्माण कैसे करें? और मेरी आरपीआई पर काम करने वाले एक साधारण परीक्षण कार्यक्रम को सफलतापूर्वक बनाया है।

ऐसा करने के लिए, मुझे arm-unknown-linux-gnueabi-gcc hello.c -o helloअपने x86 डेस्कटॉप और scpअपने आरपीआई के निष्पादन योग्य पर चलना होगा। यह धीमा और एक परेशानी है। मैं बल्कि अपने आरपीआई से संकलन को नियंत्रित करूंगा।

मैंने इसके बारे में पढ़ा है distcc, जिसका उपयोग संकलन को एक मशीन से दूसरे में वितरित करने के लिए किया जा सकता है।

मैं किस तरह इसे इन्स्टॉल करूँ? मेरे पास डेबियन / उबंटू और आर्क लिनक्स डेस्कटॉप दोनों हैं और एसडी कार्ड पर दोनों ओएस स्थापित हैं।


मैं किसी ऐसे व्यक्ति की प्रतीक्षा कर रहा हूं जो मुझे इस प्रश्न को पोस्ट करने के लिए नहीं है। मैं वास्तव में यह नहीं करना चाहता था। अच्छा काम।
16:27 पर Jivings

export DISTCC_VERBOSE=1इसके लिए धन्यवाद ! यह वही है जो मैं अपने distcc टूलकिन को डिबग करने के लिए देख रहा हूं

जवाबों:


12

ये निर्देश मानते हैं कि आपके पास दास पर काम करने वाला क्रॉस-कंपाइलर है। कृपया पढ़ें कि क्रॉस-संकलन के लिए जीसीसी 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उपयोगी जानकारी के ग्राहक इच्छा उत्पादन लोड होता है।

यह एक लंबी पोस्ट है, इसलिए किसी भी प्रतिक्रिया को कृतज्ञतापूर्वक प्राप्त किया जाएगा। मुझे आशा है कि मुझे सभी चरण याद हैं!


बहुत बढ़िया जवाब। मैं अपने आरपीआई विकास के लिए इसे बुकमार्क करने जा रहा हूं।
16:27 बजे Jivings

@AlexChamberlain Distcc अब "पंप मोड" का समर्थन करता है जो इसे प्रीप्रोसेसिंग को भी वितरित करने की अनुमति देता है।
तेराकेंद्या

@teraquendya वे वास्तव में करते हैं, मुझे इस बारे में विवरण पोस्ट करने के लिए नहीं मिला है। मैं यह सुनिश्चित करना चाहता हूं कि मुझे पंप मोड के बिना सबकुछ सही मिला।
एलेक्स चेम्बरलेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.