GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题

在WINDOWS环境的CODE::BLOCKS里面写好的测试程序,想拿到Linux里面试验一把。报错: undefined reference to `std::ios_base::Init::Init()


1. 确认是否安装 gcc-c++的支持库

[root@ht168 ~]# rpm -qa| grep gcc
gcc-4.8.5-11.el7.x86_64
gcc-c++-4.8.5-11.el7.x86_64
libgcc-4.8.5-11.el7.x86_64
libgcc-4.8.5-11.el7.i686


2.  错误信息如下

[ecsmid@ht168 zhouc]$ gcc -m64 -o zhou while_test.cpp 
/tmp/ccIp6o1B.o: In function `main':
while_test.cpp:(.text+0x2d): undefined reference to `std::cout'
while_test.cpp:(.text+0x32): undefined reference to `std::basic_ostream >& std::operator<< >(std::basic_ostream >&, char const*)'
while_test.cpp:(.text+0x3e): undefined reference to `std::cin'
while_test.cpp:(.text+0x43): undefined reference to `std::istream::operator>>(int&)'
while_test.cpp:(.text+0x58): undefined reference to `std::basic_ios >::operator void*() const'
while_test.cpp:(.text+0x6c): undefined reference to `std::cout'
while_test.cpp:(.text+0x71): undefined reference to `std::basic_ostream >& std::operator<< >(std::basic_ostream >&, char const*)'
while_test.cpp:(.text+0x7e): undefined reference to `std::ostream::operator<<(int)'
/tmp/ccIp6o1B.o: In function `__static_initialization_and_destruction_0(int, int)':
while_test.cpp:(.text+0xaa): undefined reference to `std::ios_base::Init::Init()'
while_test.cpp:(.text+0xb9): undefined reference to `std::ios_base::Init::~Init()'


3. 解决:

Linux下面采用gcc 编译 c++的代码第一需要安装gcc-c++支持库,其次编译的时候需要添加参数 -lstdc++。正确的编译方式如下

[ecsmid@ht168 zhouc]$ gcc -m64 -lstdc++ -Wall -o zhou while_test.cpp 
[ecsmid@ht168 zhouc]$ 





你可能感兴趣的:(C/C++)