output.cpp:(.text+0x3a29): undefined reference to `std::basic_ostream

hello.o: In function `main':
hello.cpp:(.text+0x41): undefined reference to `std::cin'
hello.cpp:(.text+0xd1): undefined reference to `std::cout'
hello.o: In function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x19e): undefined reference to `std::ios_base::Init::Init()'
hello.cpp:(.text+0x1a3): undefined reference to `std::ios_base::Init::~Init()'
hello.o: In function `std::istream_iterator, std::allocator >, char, std::char_traits, int>::~istream_iterator()':
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiED2Ev[_ZNSt16istream_iteratorISscSt11char_traitsIcEiED5Ev]+0x10): undefined reference to `std::basic_string, std::allocator >::~basic_string()'
hello.o: In function `std::istream_iterator, std::allocator >, char, std::char_traits, int>::istream_iterator(std::basic_istream >&)':
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2ERSi[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5ERSi]+0x24): undefined reference to `std::basic_string, std::allocator >::basic_string()'
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2ERSi[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5ERSi]+0x41): undefined reference to `std::basic_string, std::allocator >::~basic_string()'
hello.o: In function `std::istream_iterator, std::allocator >, char, std::char_traits, int>::istream_iterator()':
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2Ev[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5Ev]+0x24): undefined reference to `std::basic_string, std::allocator >::basic_string()'
hello.o: In function `std::istream_iterator, std::allocator >, char, std::char_traits, int>::istream_iterator(std::istream_iterator, std::allocator >, char, std::char_traits, int> const&)':
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiEC2ERKS2_[_ZNSt16istream_iteratorISscSt11char_traitsIcEiEC5ERKS2_]+0x2f): undefined reference to `std::basic_string, std::allocator >::basic_string(std::basic_string, std::allocator > const&)'
hello.o: In function `std::istream_iterator, std::allocator >, char, std::char_traits, int>::_M_read()':
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiE7_M_readEv[std::istream_iterator, std::allocator >, char, std::char_traits, int>::_M_read()]+0x29): undefined reference to `std::basic_ios >::operator void*() const'
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiE7_M_readEv[std::istream_iterator, std::allocator >, char, std::char_traits, int>::_M_read()]+0x61): undefined reference to `std::basic_istream >& std::operator>>, std::allocator >(std::basic_istream >&, std::basic_string, std::allocator >&)'
hello.cpp:(.text._ZNSt16istream_iteratorISscSt11char_traitsIcEiE7_M_readEv[std::istream_iterator, std::allocator >, char, std::char_traits, int>::_M_read()]+0x7f): undefined reference to `std::basic_ios >::operator void*() const'
hello.o: In function `void std::__insertion_sort<__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > > >(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator

……




但是使用Code::Blocks编译、链接可以通过,不解,上网搜了一下。

网上的解释是:“ you need to add -lstdc++, or use 'g++' rather than 'gcc' as your driver program.”,也就是说如果想要使用g++编译程序的话,那么链接时需要添加“-Istdc++”。

我试了一下 , 在链接时加上"-Istdc++",就没有问题了。

关于g++,让我想起了,在ubuntu下一开始安装完code::blocks的时候,提示需要安装g++。原来code::blocks内置编译器使用的是g++,但是为什么在建工程的时候,提示使用的编译器是gcc呢??

这就引来了一个问题:“gcc和g++的区别和联系是什么?”网上搜了一下“gcc和g++”(http://www.yuanma.org/data/2007/0406/article_2498.htm),整理下来有这么几条是有用的:

(1)gcc和g++都是GNU(组织)的一个编译器。

(2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。

(3)对于.cpp的程序,编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。(个人觉得这条是最重要的)



你可能感兴趣的:(output.cpp:(.text+0x3a29): undefined reference to `std::basic_ostream)