2014-04-26 9 views
7

मैं डेबियन wheezy चला रहा हूँ और जीसीसी 4.7.2 से जीसीसी 4.9.0 में अपग्रेड करना चाहता था।मैं जीसीसी 4.9.एक्स कैसे संकलित और चला सकता हूं?

these instructions के अनुसार, मैं स्थापित libgmp-dev, libmpfr-dev और libmpc-dev (अपने पैकेज मैनेजर मुझे संस्करणों 2 दिया: 5.0.5 + dfsg -2, 3.1.0-5 और 0.9-4 क्रमशः) और जीसीसी संकलित करने के लिए निम्न भाग गया (ध्यान दें कि मेरे मामले में यह 4.9.0 4.6.2 के बजाय) था:

tar xzf gcc-4.6.2.tar.gz 
cd gcc-4.6.2 
./contrib/download_prerequisites 
cd .. 
mkdir objdir 
cd objdir 
$PWD/../gcc-4.6.2/configure --prefix=$HOME/gcc-4.6.2 
make 
make install 

अब मैं एक objdir निर्देशिका सामान से भरा है, लेकिन जहां जी ++ है, और जहां मैं इस निर्देशिका रखना चाहिए?

मुझे लगता है कि मुझे इसे usr/local पर ले जाना चाहिए और मेरे PATH चर में कुछ जोड़ें, लेकिन मुझे नहीं पता कि वास्तव में क्या है, और यह सुनिश्चित करने के लिए कि यह मेरे पुराने जीसीसी इंस्टॉल से पहले खोजा जाए।

+0

बाइनरी के साथ कोई 'gcc-4.9.0' निर्देशिका आपकी होम निर्देशिका में दिखाई नहीं दे रही है? –

+0

बहुत सी चीजें बहुत रोचक हैं: 1) आप 4.6.2 निर्देशिका में 4.9.0 क्यों स्थापित करते हैं? :-) 2. आप ../xyz के बजाय $ PWD /../ xyz का उपयोग क्यों करते हैं? आपको $ HOME/gcc /bin/ – Klaus

+0

@Klaus में निष्पादन योग्य पाएंगे, उन सभी चीजों को पहले ही समझाया गया है। मैंने इसे 4.9.0 पर स्थापित किया और मुझे नहीं पता कि उन्होंने '$ PWD' क्यों उपयोग किया लेकिन यह ठीक काम करता है। क्या मैं किसी भी तरह से यह सुनिश्चित कर सकता हूं कि जब मैं 'g ++' टाइप करता हूं तो यह डेबियन के साथ आए जीसीसी की बजाय मेरे नए इंस्टॉलेशन को इंगित करता है? – arman

उत्तर

7

इन आदेशों करने के बाद (ध्यान दें कॉन्फ़िगर की --prefix विकल्प)

$PWD/../gcc-4.9.0/configure --prefix=$HOME/gcc-4.9.0 
make install 

नए जीसीसी $HOME/gcc-4.9.0 निर्देशिका में स्थापित किया जाएगा (वहाँ bin, lib, इसके अंदर share तरह उपनिर्देशिका होना चाहिए)।

gcc करने के लिए पूर्ण पथ $HOME/gcc-4.9.0/bin/gcc, और g++ (जो gcc को सिमलिंक है) यहाँ हो जाएगा हो जाएगा: $HOME/gcc-4.9.0/bin/g++

objdir में कोई अलग g++ नहीं हो सकता है क्योंकि gcc कंपाइलर ड्राइवर कई भाषाओं के लिए ड्राइवर लागू करता है; मोड (सी या सी ++) argv[0] (बाइनरी का नाम, जिसे ड्राइवर चलाने के लिए उपयोग किया गया था: gcc या g++; यह मोड झंडे को जोड़ने पर भी प्रभाव डालता है) और स्रोत फ़ाइल एक्सटेंशन (gcc दोनों इनपुट के रूप में सी और सी ++ प्रोग्राम स्वीकार करता है ऑब्जेक्ट फाइलों में संकलन के लिए)। इसलिए, g++make install द्वारा सिम्लिंक के रूप में जेनरेट किया जा सकता है, और उत्पन्न सिमलिंक स्टोर करने की जगह $prefix/bin है।

जीसीसी बनाने और $HOME/gcc-4.9.0 निर्देशिका में स्थापित करने के बाद, आप इसका उपयोग कर सकते हैं; लेकिन डिफ़ॉल्ट सिस्टम जीसीसी अद्यतन नहीं किया जाएगा। वितरण जीसीसी का अद्यतन वितरक उपकरण (apt, dpkg-build, आदि) के माध्यम से किया जाना चाहिए। व्हीजी के लिए सिस्टम-व्यापी जीसीसी का वर्तमान प्रीबिल्ड संस्करण 4.7.2, 4.8.2 जेसी और सिड के लिए और 4.9-2 "प्रायोगिक" के लिए है।

+0

पढ़ और समझते हैं, इसलिए मैं' g ++ ' किसी भी तरह से इस नई बाइनरी को इंगित करने के लिए आदेश? क्या मुझे हर बार जब मैं g ++ चलाने के लिए उस निर्देशिका को मैन्युअल रूप से इंगित करना चाहता हूं? – arman

+0

आप अपना खुद का $ पाथ पर्यावरण परिवर्तक बदल सकते हैं, जिसमें '/ usr/बिन'। उदाहरण के लिए, क्या आप बैश का उपयोग करते हैं, '~/.bashrc' फ़ाइल में जोड़ें:' निर्यात PATH = ~/gcc-4.9.0/bin: $ पथ '। फिर जांचने के लिए नया टर्मिनल खोलें। – osgx

+0

@osgx : Gcc-4.9.0 को स्थापित करने और उपयोग करने के बारे में विस्तृत जानकारी के लिए धन्यवाद। मैं अपने जीएनयू/लिनक्स टर्मिनल पर नवीनतम जीसीसी/जी ++ को स्थापित और उपयोग करने में सक्षम हूं जिस तरह से इस एसओ पोस्ट में चरणों का उल्लेख किया गया है। हालांकि मैं चाहूंगा यह जानने के लिए कि क्या मैं सुरक्षित रूप से $ HOME/objdir निर्देशिका को हटा सकता हूं? इसकी मशीन पर लगभग 3.3 जीबी आकार है। –

संबंधित मुद्दे

 संबंधित मुद्दे