Linux下C++編程環(huán)境搭建

操作系統(tǒng)是Deepin 15 amd64

安裝g++環(huán)境

sudo apt-get install g++

運(yùn)行g++ -v查看是否安裝成功。

  • gcc與g++的區(qū)別
    gcc可以用來(lái)編譯C或者C++,但是只能編譯C++源文件,不能自動(dòng)與C++使用的庫(kù)連接,g++可以實(shí)現(xiàn)C++程序的編譯和連接,要編譯C++代碼生成可執(zhí)行文件使用g++

一個(gè)簡(jiǎn)單的CPP文件

#include <iostream>
using namespace std;
int main(){
   cout << "Come up and C++ me some time.";
   cout << endl;
   cout << "you won't regret it " << endl;
   return 10;
}```
使用g++進(jìn)行編譯`g++ -o example1 example1.cpp`
然后執(zhí)行可執(zhí)行文件`./example1`
獲取main函數(shù)的返回值`echo $?`
如果想讓編譯和運(yùn)行同時(shí)進(jìn)行可以使用下面的命令:`g++ -o example1 example1.cpp && ./example`

###頭文件
頭文件的作用就是被其他的.cpp包含,本身并不參與編譯,但是實(shí)際上它們的內(nèi)容卻在多個(gè).cpp文件中得到了編譯。
頭文件中應(yīng)該只放變量和函數(shù)的聲明,而不能放它們的定義。
除了:
 - const對(duì)象的定義
 - 內(nèi)聯(lián)函數(shù)inline的定義
 - 類的定義

###分離式編譯
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"
#include <iostream>
using namespace std;
Circle::Circle(){
    this->r=5.0;
}
Circle::Circle(double R){
    this->r=R;
}
double Circle::Area(){
    return 3.14*r*r;
}```
main.cpp

include "Circle.h"

include <iostream>

using namespace std;
int main(int argc,char *argv[]){
Circle c(3);
cout << "Area=" << c.Area() << endl;
return 0;
}```
編譯:
-c命令表示編譯,頭文件不允許顯式編譯,實(shí)際上已經(jīng)編譯,如果只修改了一個(gè)源文件(CPP),只需要編譯改動(dòng)的文件。
g++ -c Circle.cpp -o Circle.o
g++ -c main.cpp -o main.o
g++ main.o Circle.o -o main
./main

makefile

定義了整個(gè)工程的編譯規(guī)則,自動(dòng)化編譯,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的命令工具。

  • 基本規(guī)則:
target...:prerequisites...
   command```
target指的是目標(biāo)文件,可以是Object File,也可以是可執(zhí)行文件。
prerequisites是生成target所需要的文件或者目標(biāo)
command是make需要執(zhí)行的命令,但是g++命令開(kāi)頭必須有tab空格。
將名字命名為Makefile或者makefile,在命令行下輸入make就可以自動(dòng)化編譯。

main: main.o Circle.o
g++ main.o Circle.o -o main
Circle.o:Circle.cpp
g++ -c Circle.cpp -o Circle.o
main.o:main.cpp
g++ -c main.cpp -o main.o```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容