How to compile a c++ program in Linux?
我创建了一个文件hi.cpp,并编写了下面给出的命令:
1 2 3 4 5 6 7 8 | #include <iostream> using namespace std; int main () { cout <<"Hello World!"; cout <<"I'm a C++ program"; return 0; } |
然后我用下面的命令在我的RHEL6机器中运行它
1 | gcc hi.cpp |
号
我有一些错误,如下:
1 2 3 4 5 6 7 8 9 10 11 12 | [chankey@localhost ~]$ gcc hi.cpp /tmp/cc32bnmR.o: In function `main': hi.cpp:(.text+0xa): undefined reference to `std::cout' hi.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, const char*)' hi.cpp:(.text+0x19): undefined reference to `std::cout' hi.cpp:(.text+0x1e): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, const char*)' /tmp/cc32bnmR.o: In function `__static_initialization_and_destruction_0(int, int)': hi.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::Init()' hi.cpp:(.text+0x51): undefined reference to `std::ios_base::Init::~Init()' /tmp/cc32bnmR.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status [chankey@localhost ~]$ |
这些错误表示什么?我的代码是正确的,那我为什么会出错?
使用G++
1 | g++ -o hi hi.cpp |
G++是C++的,GCC是C语言的,虽然用-LISBSTDC + +,你可以编译C++,大多数人不这样做。
正如其他答案所说,使用g++而不是gcc。
或使用品牌:
你必须使用G++(如其他答案所述)。除此之外,您还可以考虑在命令行中提供一些好的选项(这有助于避免生成格式错误的代码):
1 2 3 | g++ -O4 -Wall hi.cpp -o hi.out ^^^^^ ^^^^^^ optimize related to coding mistakes |
有关更多详细信息,请参阅
试试这个:
1 | g++ -o hi hi.cpp |
GCC仅适用于C
1 | g++ -o foo foo.cpp |
。
用于cc1plus编译器的g+->驱动程序
-o->表示输出文件(这里的foo是输出文件的名称)。可以是任何名称)
foo.cpp——>要编译的源文件
要执行编译文件,只需键入
1 | ./foo |
$G++1st.cpp-O 1st
美元/1
如果发现任何错误,请首先使用下面的代码安装G++
$sudo apt安装G++
然后安装g++并使用上面的运行代码