gcc编译c++文件

gcc编译c++文件gcc 是编译 c 语言的 默认情况下 如果直接编译 c 程序 会报错 root serverdemo2 lshello cpp root serverdemo2 cathello cpp nbsp include lt iostream gt usingnamespa intmain nbsp cout lt lt hello c lt lt end

gcc是编译c语言的,默认情况下,如果直接编译c++程序,会报错:

[root@server demo2]# ls
hello.cpp
[root@server demo2]# cat hello.cpp 
#include


using namespace std;
int main(){

  cout<<"hello,c++"<   return 0;

}
[root@server demo2]# gcc -o hello hello.cpp 
/tmp/ccAa6oYP.o: In function `main’:
hello.cpp:(.text+0xa): undefined reference to `std::cout’
hello.cpp:(.text+0xf): undefined reference to `std::basic_ostream

>& std::operator<<
>(std::basic_ostream

>&, char const*)’

hello.cpp:(.text+0x14): undefined reference to `std::basic_ostream

>& std::endl

>(std::basic_ostream

>&)’

hello.cpp:(.text+0x1c): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccAa6oYP.o: In function `__static_initialization_and_destruction_0(int, int)’:
hello.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()’
hello.cpp:(.text+0x59): undefined reference to `std::ios_base::Init::~Init()’
collect2: error: ld returned 1 exit status










































我们可以通过增加参数-lstdc++来编译,结果如下:

[root@server demo2]# gcc -o hello hello.cpp -lstdc++
[root@server demo2]# ls
hello  hello.cpp
[root@server demo2]# ./hello 
hello,c++
[root@server demo2]# 











如果编译c++程序,可以直接通过g++命令来编译,如下:

gcc编译c++文件

可以使用更简单的,直接g++ hello.cpp,这样生成的文件就是a.out

[root@server demo2]# g++ hello.cpp 
[root@server demo2]# ls
a.out  hello.cpp
[root@server demo2]# ./a.out 
hello,c++
[root@server demo2]# 










多个文件编译:准备circle.h,circle.cpp,main.cpp

circle.h

#ifndef CIRCLE_H #define CIRCLE_H class Circle{ private: double r; public: Circle(); Circle(double r); double area(); }; #endif 

circle.cpp

#include "circle.h" Circle::Circle(){ this->r = 5; } Circle::Circle(double r){ this->r = r; } double Circle::area(){ return 3.14*r*r; } 

main.cpp

#include 
  
    #include "circle.h" using namespace std; int main(){ Circle c(3); cout<<"area => "< 
    
  

多个文件编译,使用gcc编译,就类似这样:gcc -o main main.cpp circle.cpp -lstdc++,该命令编译中,文件不能带上circle.h头文件,否则会报错。

[root@server demo1]# ls
circle.cpp  circle.h  main.cpp
[root@server demo1]# gcc -o main main.cpp circle.cpp -lstdc++
[root@server demo1]# ls
circle.cpp  circle.h  main  main.cpp
[root@server demo1]# ./main
area => 28.26
[root@server demo1]# 














使用g++编译:可以带上头文件circle.h

[root@server demo1]# ls
circle.cpp  circle.h  main.cpp
[root@server demo1]# g++ -o main2 main.cpp circle.h circle.cpp
[root@server demo1]# ls
circle.cpp  circle.h  main2  main.cpp
[root@server demo1]# ./main2 
area => 28.26
[root@server demo1]# 














版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226053.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午7:57
下一篇 2026年3月17日 上午7:57


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号