c++ - GLIBCXX_3.4.21 फ़ाइल में परिभाषित नहीं है, लिब-टाइम संदर्भ के साथ। 6



gcc linker (1)

माफी, मैं इस तरह के प्रश्नों को बहुत ही अपेक्षाकृत अक्सर पूछता हूं, हालांकि कोई समाधान मेरे लिए काम नहीं करता है। जब किसी भी जटिल जटिलता के किसी भी सी ++ कोड को चलाने का प्रयास करते हैं, तो मुझे उपरोक्त त्रुटि मिलती है। पूर्ण त्रुटि संदेश है:

/main: relocation error: ./main: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

एक और परियोजना चल रहा है, मुझे एक बहुत ही समान त्रुटि मिलती है:

./main: relocation error: ./main: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

मेरे संकलन में वास्तव में कोई समस्या नहीं है, क्योंकि ये परियोजनाएं दोनों ठीक संकलित करती हैं। यह तब होता है जब मैं निष्पादन योग्य चलाने की कोशिश करता हूं। मैंने सोचा कि यह मेरे जीसीसी इंस्टॉल करने में एक त्रुटि थी, इसलिए आज मैं इसे पुनर्स्थापित कर लिया, हालांकि उसने बिल्कुल भी मदद नहीं की। मुझे वास्तव में पता नहीं है कि इसे ठीक करने के लिए क्या करना है, क्या कोई भी सहायता प्रदान कर सकता है?

यह मेकफाइल है जिसका मैं एक प्रोजेक्ट को संकलित करने के लिए उपयोग कर रहा हूं, मुझे लगता है कि यह त्रुटि कहां हो सकती है:

CC= g++
CFLAGS= -Wall -g -std=c++11 -lX11 -lpthread
OBJS = main.o Board_Tile.o Sliding_Solver.o

main: $(OBJS)
   $(CC) -o [email protected] $(OBJS)
%.o : %.cc
   $(CC) $(CFLAGS) -c $^

मेरा जीसीसी संस्करण 5.3.0 है, मैं Ubuntu 14.0.4 चला रहा हूँ।


जीसीसी 5.1 या 5.2 (अब इसे याद नहीं रख सकते, इसे Google) C ++ ABI बदल दिया है आपका मानक उबुंटू (लाइबस्टडीसी ++ सहित) पुराने एबीआई के साथ संकलित है

आपका जीसीसी कम्पाइलर नई एबीआई का उपयोग करने की कोशिश करता है कभी-कभी यह काम करता है, ज्यादातर समय - नहीं।

इसलिए, आपके कोड को संकलित करने के तीन तरीके हैं:

1) डाउनग्रेड जीसीसी

2) ऐड-डी_जीएलईबीसीएक्स_यूएसईसीएफ़एक्स_एबीआई = 0 (सीएमके उदाहरण) फ्लैग (यदि आप इस तरह से जाते हैं, तो आपको प्रत्येक मेसेफाइल को इस ध्वज को जोड़ना चाहिए या जब तक आप उबंटू या डाउनग्रेड जीसीसी अपग्रेड नहीं करते हैं,

3) उबुंटू का नवीनीकरण (इसे परीक्षण किया गया, जिस तरह से 16.04 नए एबीआई और नए जीसीसी को डिफ़ॉल्ट रूप से चला जाता है, मुझे एके-ग्रेप की जरूरत होती है और मेरे सभी पालतू परियोजनाओं से ऊपर उल्लिखित फ्लैग को हटा दिया जाता है)

भी: जीसीसी 5 के _GLIBCXX_USE_CXX11_ABI या नई एबीआई को समझना

पुनश्च मजेदार बात, जवाब सवाल में है: _ZNSt7__cxx11 : CXX11 , हालांकि हम वास्तव में त्रुटि संदेश नहीं पढ़ा है।





libstdc++