/tmp/ccpczayP.o: In function `__static_initialization_and_destruction_0(int, int)':
statemachine.cpp:(.text+0x12b): undefined reference to `std::ios_base::Init::Init()'
statemachine.cpp:(.text+0x13a): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status
当编译的时候出现如上的错误时,就应该检查你所建议的文件是c的还是c++的
在linux下编译c++ 程序要使用g++ 编译器,如果你要是使用gcc编译器就会有上面的报错信息,只要在在gcc后加上 -lstdc++就ok了
eg: gcc example.c -lstdc++
gcc 和 g++ 是有区别的
(1)gcc和g++都是GNU(组织)的一个编译器。
(2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。
(3)对于.cpp的程序,编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。