मैं यहां कुछ कार्यक्रम संकलित कर रहा हूं और मेरे पास 4 कोर हैं। वहाँ बताने के लिए एक तरीका है make
, cmake
या gcc
सभी कोर या उस प्रभावित करने के लिए कुछ का उपयोग कर संकलन करने के लिए?
मैं यहां कुछ कार्यक्रम संकलित कर रहा हूं और मेरे पास 4 कोर हैं। वहाँ बताने के लिए एक तरीका है make
, cmake
या gcc
सभी कोर या उस प्रभावित करने के लिए कुछ का उपयोग कर संकलन करने के लिए?
जवाबों:
यदि कोई पैकेज इसका समर्थन करता है, तो आप -j
ध्वज का उपयोग समानांतर नौकरियों को चलाने के लिए कर सकते हैं , जैसे:
make -j8
इस ध्वज के बारे में अधिक जानकारी स्टैकेवरफ्लो प्रश्न में पाई जा सकती है कि जब यह उपलब्ध कोर की संख्या से बड़ी संख्या में पारित हो जाता है तो मेक-जे बेहतर प्रदर्शन क्यों करता है? ।
यदि आपके पास कई मशीनें हैं, तो डिस्टेक को जाएं। शामिल मशीनों पर, sudo apt-get install distcc
। यह मानते हुए कि आपकी निर्माण मशीन 192.168.1.1 है:
सहायक मशीनों पर, भागो:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
बिल्ड मशीन पर, चलाने से पहले configure
या cmake
आपको मेजबानों को निर्दिष्ट करना होगा जिसे आप निर्माण प्रक्रिया के लिए उपयोग करना चाहते हैं। वैकल्पिक रूप से, स्लैश के बाद एक साथ नौकरियों की संख्या निर्दिष्ट करें (4 के लिए डिफ़ॉल्ट):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
कंपाइलर का उपयोग डिस्टेक करें:
export PATH="/usr/lib/distcc:$PATH"
अब configure
या cmake
आवेदन और के साथ निर्माण:
make -j$(distcc -j)
ध्यान दें कि यदि आपने /usr/lib/distcc
दो बार अपने पैट में डाल दिया है , तो यह विफल हो जाएगा। /usr/lib/distcc
अपने में केवल एक बार सेट करना सुनिश्चित करें PATH
।
अधिक जानकारी के लिए, distcc (1) और distccd (1) के लिए मैनुअल पेज देखें ।
distccd --user nobody
। अन्यथा, यह उस उपयोगकर्ता के अधीन चलेगा जिसने इसे निष्पादित किया है।