gentoo - llvm के लिए समानांतर निर्माण को अक्षम करें


1

मेरे पास Gentoo कंप्यूटर पर अपेक्षाकृत कम मात्रा में RAM (1 GB) के साथ स्थापित है। जब मैं स्थापित करता हूं llvm ( emerge -a llvm ), कंप्यूटर हमेशा मेमोरी से बाहर जाता है। सभी 4 cc1plus सिस्टम अनुपयोगी होने पर लगभग 25% RAM का उपयोग करता है। मुझे लगता है कि एक समय में केवल एक प्रक्रिया का उपयोग करने से मदद मिल सकती है।

मैं कैसे दौड़ सकता हूं llvm निर्माण (उपयोग करता है) cmake तथा ninja ) केवल एक संकलक प्रक्रिया के साथ?


अद्यतन करें

में एक टाइपो था make.conf:

#MAKEFAGS="-j3"
MAKEFAGS="-j1"

मैं कई अन्य प्रकारों की कोशिश कर रहा था लेकिन कुछ दिनों में लिखूंगा। (क्योंकि संकलन में कई घंटे लगते हैं और अगर कोई रैम उपलब्ध नहीं है, तो मुझे इसे फिर से चालू करके पावर को रिबूट करना होगा।

जवाबों:


0

भले ही ninja नहीं है make, इसके पुनर्निर्माण को किसी भी पहचान और सम्मान करना चाहिए -j में निर्दिष्ट पैरामीटर MAKEOPTS वातावरण विविधता। इसका मतलब है कि आपको अधिकतम एक नौकरी के लिए बाध्य करने में सक्षम होना चाहिए MAKEOPTS=-j1। आप इसे एक बार के आधार पर कर सकते हैं:

MAKEOPTS=-j1 emerge -a llvm

आप इस बदलाव को अपने सिस्टम पर सभी संकुल के लिए विश्व स्तर पर / स्थायी रूप से संपादित करके सेट कर सकते हैं MAKEOPTS= लाइन में /etc/portage/make.conf

हालाँकि, यदि आप सेट करते हैं MAKEOPTS=-j1 अपने खोल के माध्यम से या make.confसमानांतरकरण सेटिंग्स सभी पैकेजों पर लागू की जाएंगी emerge स्थापित करता है। यदि आप इसे केवल एक पैकेज पर लागू करना चाहते हैं, तो आप नामक फ़ाइल बना सकते हैं /etc/portage/env/sys-devel/llvm (यदि आवश्यक हो तो कोई अनुपलब्ध निर्देशिका बनाएं) और इन सामग्रियों को इसमें रखें:

MAKEOPTS=-j1

यह केवल llvm पैकेज के लिए चर को लागू करेगा

शेल में यह कैसे करें:

mkdir -p /etc/portage/env/sys-devel
echo MAKEOPTS=-j1>>/etc/portage/env/sys-devel/llvm

निंजा और MAKEOPTS

जेंटू में, क्योंकि लोग भरोसा करते हैं MAKEOPTS=-j«n» नौकरियों की संख्या को नियंत्रित करने के लिए, विभिन्न एक्लेसेस और ईबिल्ड इस चर का नक्शा बनाएंगे -j उपयोग में वास्तविक निर्माण प्रणाली के समतुल्य पैरामीटर। आप इसमें देख सकते हैं eclass/ninja-utils.eclass (जिसका उपयोग किया जाता है cmake-utils.eclass जिसका उपयोग किया जाता है llvm )। कि स्निपेट सिर्फ -j पैरामीटर और इसे पास करता है ninja इसलिये ninja उस पैरामीटर का समर्थन करता है, जबकि वह उन अन्य चीजों का समर्थन नहीं कर सकता है, जिन्हें लोग अंदर रखते हैं MAKEOPTS

अस्वीकरण: मैंने वास्तव में नवीनतम के साथ इसका परीक्षण नहीं किया है llvm ebuild। अगर इस उत्तर के साथ कोई समस्या हो तो कृपया टिप्पणी करें!


जवाब का अपडेट देखें। :-(
jiwopene

@jiwopene आह, मैं देख रहा हूँ। तो ऐसा लगता है कि आप उपयोग करने की कोशिश कर रहे थे MAKEFLAGS, गलती से फोन कर दिया MAKEFAGS इसके बजाय, और फिर भी दोनों में से कोई भी समर्थित दूत नहीं हैं। आईटी इस MAKEOPTS ;-)
binki

मैं फिर से संकलन कर रहा था, इसलिए मैं इसे रोकने और पुनः प्रयास करने जा रहा हूं।
jiwopene

लगता है अब ठीक है।
jiwopene
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.