日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

gcc编译c++文件

發布時間:2024/3/26 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gcc编译c++文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gcc是編譯c語言的,默認情況下,如果直接編譯c++程序,會報錯:

[root@server demo2]# ls
hello.cpp
[root@server demo2]# cat hello.cpp?
#include <iostream>
using namespace std;
int main(){
? cout<<"hello,c++"<<endl;
? 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<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
hello.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
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++命令來編譯,如下:

可以使用更簡單的,直接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 <iostream> #include "circle.h" using namespace std;int main(){Circle c(3);cout<<"area => "<<c.area()<<endl;return 0; }

多個文件編譯,使用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]#?

總結

以上是生活随笔為你收集整理的gcc编译c++文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。