2011-11-07 22 views
32

मैं सी ++ में कुछ सचमुच सरल चीजें करने की कोशिश कर रहा हूं, लेकिन मुझे इससे निपटने के तरीके पर कोई जानकारी नहीं मिल रही है। यहां तक ​​कि पुस्तक जो मैंने अभी कहा है "बस संकलित करें और कार्यक्रम चलाएं"।आर्किटेक्चर x86_64 के लिए अनिर्धारित प्रतीकों: मुझे किस आर्किटेक्चर का उपयोग करना चाहिए?

test.cpp

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Never fear, C++ is here!"; 
    return 0; 
} 

संकलक का कहना है:

Undefined symbols for architecture x86_64: 
    "std::cout", referenced from: 
     _main in ccVfJHGs.o 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     _main in ccVfJHGs.o 
    "std::ios_base::Init::Init()", referenced from: 
     __static_initialization_and_destruction_0(int, int)in ccVfJHGs.o 
    "std::ios_base::Init::~Init()", referenced from: 
     ___tcf_0 in ccVfJHGs.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

मैं -arch i386 और -m32 की तरह झंडे के साथ संकलन करने की कोशिश की लेकिन यह हमेशा कहते हैं कि यह गलत वास्तुकला है। मुझे किसका उपयोग करना चाहिए?

मैं इसे मैक पर कर रहा हूं लेकिन एक्सकोड का उपयोग नहीं कर रहा हूं, बस जीसीसी।

+0

आप कौन सा जीसीसी प्रयोग करते हैं साथ लिंक करने के? Macports? XCode? ऐसा लगता है कि आपका रास्ता गड़बड़ हो गया है। – FFox

उत्तर

61

त्रुटि यह नहीं है कि यह गलत आर्किटेक्चर है, यह std::cout (और अन्य प्रतीकों) परिभाषित नहीं है।

आपको सही सी ++ पुस्तकालयों के साथ स्वचालित रूप से लिंक करने के लिए g++gcc से संकलित और लिंक करना चाहिए।

+1

ओह, धन्यवाद! मेरे लिए जीसीसी काम क्यों नहीं कर रहा है? मैं जो भी उदाहरण देखता हूं वह जीसीसी का उपयोग कर रहा है, क्या यह एक ओएस एक्स चीज है? – oskob

+2

@oskob नहीं, यह बस इसलिए है क्योंकि जीसीसी सी संकलक है (हालांकि यह सी ++ वाक्यविन्यास को संभालता है), और जी ++ सी ++ कंपाइलर है। –

+0

जीसीसी एक फ्रंट-एंड नहीं है जो g ++ को प्रतिनिधि करेगा जब यह .cc/.cpp फ़ाइलों का सामना करता है? – RobH

5

त्रुटि इसलिए हुई है क्योंकि आप gcc के साथ संकलित कर रहे हैं, जो केवल डिफ़ॉल्ट-लिंक libc है। आपको g++ के साथ संकलित करने की आवश्यकता है ताकि libstdc++ भी ऑटो-लिंक हो।

0

उपयोग छ ++ जीसीसी के बजाय सटीक C++ पुस्तकालयों

+0

यह एक उत्तर के बजाय एक टिप्पणी है। कृपया इसे पोस्ट करने के लिए प्रतिनिधि प्राप्त करें। –

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

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