gcc - GLIBCXX_3.4.9 नहीं मिला




libstdc++ (2)

समस्या यह है कि आपने अपना नया GCC गलत बनाया: लिनक्स पर आपको इसका उपयोग करना चाहिए

./configure --prefix=/usr

डिफ़ॉल्ट अधिष्ठापन उपसर्ग /usr/local , यही कारण है कि gcc और g++ बायनेरिज़ को /usr/local/bin में स्थापित करें।

आपके साथ अब क्या हो रहा है कि आप नया (सिमलिंक) GCC 4.2.4 का उपयोग करके संकलन और लिंक करते हैं, लेकिन रनटाइम पर आपके प्रोग्राम पुराने / यूज़र / लिब 64 / लिबस्टडीसी ++। संस्करण 6 (संस्करण 6.0.8, के बजाय आवश्यक 6.0.9)। आप पुष्टि कर सकते हैं कि ldd build/ALPHA_SE/m5.opt : आपको यह देखना चाहिए कि यह /usr/lib64/libstdc++.so.6 का उपयोग करता है।

आप कई सुधार कर सकते हैं

env LD_LIBRARY_PATH=/usr/local/lib64 ldd build/ALPHA_SE/m5.opt

आपको यह दिखाना चाहिए कि पुस्तकालय को सही करने के लिए बाइनरी को पुनर्निर्देशित करने के लिए LD_LIBRARY_PATH सेट करना पर्याप्त है, और

LD_LIBRARY_PATH=/usr/local/lib64 build/ALPHA_SE/m5.opt

सिर्फ चलाना चाहिए आप इस पथ को "वेन" को एम 5. एपटी बाइनरी में जोड़कर- -Wl,-rpath=/usr/local/lib64

लाइब्रेरीज़ को ठीक करने का एक और स्थायी समाधान है जिस तरह से आप बायनेरिज़ तय करते हैं:

cd /usr/lib64 && mv libstdc++.so.6 libstdc++.so.6_bak &&
ln -s /usr/local/lib64/libstdc++.so.6 .

एक बेहतर समाधान यह है कि - --prefix=/usr साथ नए GCC को पुन: कॉन्फ़िगर करें, और फिर make all install

मैं libstdc ++ के विषय में एक समस्या है।

मैंने जीसीसी के एक नए संस्करण को स्थापित किया और सी ++ कोड संकलित करने की कोशिश की। कंपाइलिंग काम करती है, लेकिन जब मैं बाइनरी निष्पादित करने की कोशिश करता हूं (m5.opt उसका नाम है) मुझे निम्नलिखित त्रुटि मिलती है: build / ALPHA_SE / m5.opt: ​​/usr/lib64/libstdc++.so.6: संस्करण `GLIBCXX_3 .4.9 'नहीं मिला (बिल्ड द्वारा आवश्यक / ALPHA_SE / m5.opt)।

क्या मुझे libstdc ++ को बदलने की ज़रूरत है। इसलिए? और यदि हां, तो मैं कहां डाउनलोड कर सकता हूं? जीसीसी-वेबसाइट पर वे कहते हैं कि libstdc ++ जीसीसी का एक हिस्सा है।

मुझे आशा है कि कोई मेरी मदद कर सकता है! मैं लिनक्स पर केवल 4 महीने हूं, इसलिए मेरे लिए सब कुछ बहुत नया है

मैक्स

विवरण

जीसीसी:
मेरे पास जीसीसी 4.1.2 था, लेकिन मैंने जीसीसी 4.2.4 डाउनलोड की। अनधिकृत जीसीसी-निर्देशिका से मैंने ".configure" निष्पादित किया; "बनाना"; "सुडो मेक स्थापित" जब मैं संकलन के लिए जीसीसी या जी ++ का प्रयोग करने की कोशिश की, तो इसका डिफ़ॉल्ट संस्करण अभी भी 4.1.2 था। इस पर काबू पाने के लिए मैं कुछ लिंक बदल दिया:
mv / usr / bin / gcc / usr / bin / gcc_bak
ln -s / usr / local / bin / gcc जीसीसी
mv / usr / bin / g ++ / usr / bin / g ++ _ bak
ln -s / usr / local / bin / g ++ g ++

GLIBC (++) - लाइबस्टडीसी ++:
/usr/lib64/libstdc++.so.6 -> लिबस्टडिसी ++ .6.6.0.8
/usr/local/lib/libstdc++.so -> लिबस्टडिसी ++ ..6.6.9
/lib/libc.so.6 -> libc-2.5.so -> libc-2.5.so

लिनक्स संस्करण:
uname -a देता है: Linux madmax 2.6.18-128.4.1.el5 # 1 एसएमपी मंगल अगस्त 4 12:51:10 एडीटी 2009 x86_64 x86_64 x86_64 जीएनयू / लिनक्स


मुझे पता है यह एक बहुत पुराना सवाल है, लेकिन ...

सिस्टम कंपाइलर को बदलने के लिए आमतौर पर एक अच्छा विचार नहीं है (यानी एक में /usr ) क्योंकि पूरे सिस्टम को इसके साथ बनाया गया होगा और इसके आधार पर निर्भर होगा।

आमतौर पर नए कंपाइलर को एक अलग स्थान पर स्थापित करना बेहतर होता है और फिर libstdc ++ अकसर किये गए सवाल देखें मैं कैसे बीमा करता हूं कि गतिशील रूप से जुड़े लाइब्रेरी मिलेगी? और मैन्युअल में डायनेमिक या साझा लाइब्रेरी ढूंढना कैसे सही libstdc ++ को सुनिश्चित करना है। ऐसा रनटाइम पर मिलता है।





libstdc++