国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】編譯器-gcc/g++使用

這篇具有很好參考價值的文章主要介紹了【Linux】編譯器-gcc/g++使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人主頁 : zxctscl
文章封面來自:藝術(shù)家–賢海林
如有轉(zhuǎn)載請先通知

1. 前言

在之前已經(jīng)分享了 【Linux】vim的使用,這次來看看在云服務(wù)器上的編譯器gcc。

2. 初見gcc和g++

我們先寫一段簡單的代碼:

  #include<stdio.h>
  
  int main()
   {
    for(int i=0;i<10;i++)
     {
      printf("hello: %d\n",i);
     }
     return 0;
 
  }

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

當(dāng)我們進(jìn)行編譯的時候:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
發(fā)現(xiàn)根本就編譯不了。

這個是因為編譯器版本的問題:
查看編譯器的版本:gcc -v
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
版本不是最新的,不支持在for里面定義變量。

如果想要支持,那么得加上這個命令:

gcc test.c -std=c99

此時就編過了。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
在用gcc時候有一個選項-o,后面接一個名稱,就是把編譯的可執(zhí)行程序再起一個名字:

gcc test.c -o my.exe -std=c99

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
-o也可以放在前面,但是-o緊跟的就是修改的文件名

gcc -o you.exe test.c -std=c99

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
在Linux中以.cpp和.cc結(jié)尾的都是c++代碼
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
寫一個簡單的C++代碼:

#include<iostream>

using namespace std;

int main()
{
  for(int i=0;i<10;i++)
  {
    cout<<"hello linux"<<i<<endl;
  }
  return 0;
}

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
在這里編譯這個C++代碼

gcc test.cc

就直接報錯了
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
所以gcc不能用來編譯c++代碼。
因為gcc是用來編譯C語言的,所以它不認(rèn)識c++的語法。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

所以編譯c++代碼得用g++:

g++ test.cc

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
如果想讓編譯c++代碼時支持更高的特性,可以加上-std=c++11

g++ test.cc -std=c++11

總之:
在編譯C語言時候可以帶上:std=c99
在編譯C++代碼時可以帶上:std=c++11.
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

那么g++能不能編譯C語言的代碼呢?

g++ test.c

是可以的。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
這個也和我們認(rèn)知是一樣的,c++兼容c。
所以g++既能編譯c++,又能編譯C語言。

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
如果想要編譯一個指定名稱的c++程序,怎么寫呢?
同gcc一樣,加上-o選項,-o后面緊跟著指定的名稱:

g++ -o my.exe test.cc

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

當(dāng)然-o可以放在前面,也可以放在后面,和gcc的一樣。

g++ test.cc -o you.exe

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
同樣c++代碼的后綴還有.cpp。
將test.cc先改名為test.cpp:

mv test.cc test.cpp

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

然后編譯test.cpp,再指向a.out
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

C++代碼后綴除了.cc和.cpp之外,還有一個.cxx
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
來直接編譯一下:

g++ test.cxx -o my.exe

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

那么將后綴改為.txt能行嗎?

 mv test.cxx test.txt

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
這里是不行的,Linux是不關(guān)心文件后綴的,但是編譯器是關(guān)系。這里編譯器就是把.txt當(dāng)成文本文件了。

在之后的博客中都統(tǒng)一將C++后綴為.cc,因為最簡單。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
想知道自己對應(yīng)的g++是哪個版本的,就直接用命令:

g++ --version

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
如果沒有g(shù)++怎么安裝呢?
可以直接在網(wǎng)上搜索,就會出來了
安裝命令就是:

sudo yum install -y gcc-c++

能直接將gcc-c++的標(biāo)準(zhǔn)庫給裝上了。
裝好了,就能直接查看版本:

g++ --version

3. 程序的翻譯過程

程序的翻譯過程:預(yù)處理 編譯 匯編 鏈接

先寫一個簡單的代碼,想看見每個階段的編譯結(jié)果

  1 #include<stdio.h>
  2 #define M 100
  3 
  4 int main()
  5 {
  6     for(int i=0;i<10;i++)
  7      {
  8       printf("hello: %d\n,M:%d",i,M);
  9      }
 10     printf("hello gcc\n");
 11     //printf("hello gcc\n");
 12     //printf("hello gcc\n");
 13     //printf("hello gcc\n");
 14     //printf("hello gcc\n");
 15     //printf("hello gcc\n");
 16     //printf("hello gcc\n");
 17     //printf("hello gcc\n");
 18     //printf("hello gcc\n");
 19     //printf("hello gcc\n");
 20     //printf("hello gcc\n");
 21      return 0;
 22 
 23 }

3.1 預(yù)處理

預(yù)處理:要做的是宏替換,去注釋,頭文件展開,條件編譯。

3.1.1 宏替換 去注釋 頭文件展開

-E 就是從現(xiàn)在開始進(jìn)行程序的翻譯,預(yù)處理完成,就停下。

gcc -E test.c -o test.i

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
進(jìn)入test.i
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
保存的就是-E后的結(jié)果

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
將test.c打開,對比發(fā)現(xiàn)test.i有800多行,是怎么來的?
是從test.c的頭文件 #include<stdio.h>來的。

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
用來查看C語言標(biāo)準(zhǔn)的頭文件庫:

ls /usr/include/

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
打開stdio.h發(fā)現(xiàn)有很多函數(shù)聲明

vim /usr/include/stdio.h

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
再打開test.i

vim test.i

對比一下代碼,發(fā)現(xiàn)宏已經(jīng)替換了,而且注釋了的代碼也不在。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

3.1.2 條件編譯

先寫一個代碼在proj.c中:

  1 #include<stdio.h>
  2 int main()
  3 {
  4 #ifdef V1
  5   printf("功能1\n");
  6
  7 #elif V2
  8   printf("功能1\n");
  9   printf("功能2\n");
 10   printf("功能3\n");
 11
 12 #else
 13   printf("功能1\n");
 14   printf("功能2\n");
 15   printf("功能3\n");
 16   printf("功能4\n");
 17   printf("功能5\n");
 18   printf("功能6\n");
 19 #endif
 20
 21   return 0;
 22 }
~

在編譯之后打開proj.i
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
然后用宏定義將V1 定為1:#define V1 1
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
然后直接編譯:

gcc proj.c

發(fā)現(xiàn)結(jié)果只剩下功能1了。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

就行打開proj.c,將#define V1 1 改為#define V2 1
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
編譯運(yùn)行后:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
同樣將v2改為v3.
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

這個就叫做條件編譯,可以根據(jù)用戶指明的條件,實現(xiàn)代碼的動態(tài)裁剪。

在現(xiàn)實中,可以在軟件維護(hù)一份代碼,用條件編譯的方式,來進(jìn)行代碼的裁剪,這樣就能定制出各種功能的代碼。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
把宏刪除。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
用-D加上要宏定義的對象和值,再加上宏定義的文件,就可以直接對代碼進(jìn)行宏定義,更方便對代碼進(jìn)行裁剪

gcc -DV1=1 proj.c

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

也可以裁剪其他的選項。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

3.2 編譯

編譯:將C語言變成匯編語言。

-S:從現(xiàn)在開始進(jìn)行程序的編譯,編譯完成就停下來。

如果想要重新做一遍前面的預(yù)處理再到編譯,那么就用.c文件

gcc -S test.c -o test.s

如果想要從預(yù)處理階段直接編譯就用.i:

gcc -S test.i -o test.s

這里發(fā)現(xiàn)報錯,是因為版本的原因
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
加上它提示的-std=c99就可以了:

gcc -S test.i -o test.s -std=c99

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
進(jìn)入test.s看看

vim test.s

發(fā)現(xiàn)里面是匯編語言。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

3.3 匯編

匯編:將匯編語言翻譯為二進(jìn)制目標(biāo)文件,這種二進(jìn)制是沒有辦法指向的,還差一個鏈接。

-c:從現(xiàn)在開始進(jìn)行程序的匯編,匯編完成就停下來。

gcc -c test.s -o test.o

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
這里的后綴.o,就是.obj,打開之前用vs寫的程序,發(fā)現(xiàn)同樣有。這個文件叫可重定位目標(biāo)文件,不能直接執(zhí)行,形成exe想要用到它。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
打開這個test.o文件:

vim test.o

發(fā)現(xiàn)里面形成亂碼:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

發(fā)現(xiàn)已經(jīng)是二進(jìn)制文件了:

 file test.o

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

那么能不能直接運(yùn)行呢?
發(fā)現(xiàn)是不行的。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
那么給它加上可執(zhí)行的權(quán)限:
發(fā)現(xiàn)還是不能運(yùn)行
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

一個文件能不能被指向,不止取決于它的權(quán)限,還要本身就是可執(zhí)行程序。

得明白二進(jìn)制目標(biāo)文件是一個臨時文件,是不能夠執(zhí)行的。

3.4 鏈接

鏈接:將二進(jìn)制目標(biāo)文件形成可執(zhí)行程序。

直接:

gcc test.o

就形成可執(zhí)行的目標(biāo)文件了r
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
當(dāng)然可以加-o帶上形成的程序名:

gcc test.o -o my.exe

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
就能直接執(zhí)行。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

為了方便記憶這些選項,觀察一下可以發(fā)現(xiàn)它們連在一起就是:-ESc,只是E和S要大寫。
后綴就是-iso,就像鏡像文件。

4. 鏈接

鏈接是什么呢?
鏈接是我嗎程序和庫結(jié)合的過程。
語言一定有自己的標(biāo)準(zhǔn)庫,就像c中有c99標(biāo)準(zhǔn),要保證跨平臺性。

ldd后面接可執(zhí)行程序就會顯示它的動靜態(tài)庫

ldd my.exe

最重要的就是:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
查看鏈接到的庫

 ls /lib64/libc.so.6 -l

這里就是c標(biāo)準(zhǔn)庫。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

我們可以看看這個庫的大?。?/p>

ls /lib64/libc-2.17.so -l

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
一般進(jìn)行鏈接時是把程序和這個庫鏈接形成一個可執(zhí)行的程序。
這個庫里面在不是庫之前,是C語言標(biāo)準(zhǔn)庫的源代碼,像printf和各種方法,進(jìn)行打包形成這個庫。這個庫的安全性是很高的。

怎么知道庫里面有哪些文件?
會有一批對應(yīng)的頭文件,這個頭文件相當(dāng)于一個方法說明。
所以安裝開發(fā)環(huán)境是:安裝C標(biāo)準(zhǔn)庫和C頭文件

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

庫分為動態(tài)庫和靜態(tài)庫。在Linux里面有,同樣在windows里面也有。

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

在在Linux中庫的真正的名字是把前綴lib去掉,去掉“.”后面的后綴。
所以這個就是c標(biāo)準(zhǔn)庫。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
因為Linux存在這兩種庫,就決定了,在鏈接時,有兩種方式:動態(tài)鏈接靜態(tài)鏈接。

4.1 動態(tài)鏈接

舉個例子:就像在學(xué)校旁邊有個網(wǎng)吧,一個學(xué)長(相當(dāng)于編譯器)告訴了小明這個網(wǎng)吧的地址,(就相當(dāng)于有了目標(biāo)庫的地址)這個地址就是,這個過程就是動態(tài)鏈接。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
小明在這個網(wǎng)吧(就相當(dāng)于動態(tài)庫)的9號機(jī)(相當(dāng)于庫里面的一個方法,printf),當(dāng)小明在學(xué)校里面作業(yè)(程序執(zhí)行的代碼)想要用到電腦,去了網(wǎng)吧(跳轉(zhuǎn)到庫)的9號機(jī)(想要的方法),用完之后回學(xué)校(返回程序),這個過程就是一次動態(tài)運(yùn)行的過程。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
在網(wǎng)吧被派出所查封以后,這個網(wǎng)吧就不能進(jìn)了。也就是說動態(tài)鏈接依賴動態(tài)庫,一旦動態(tài)庫缺失,所有靜態(tài)鏈接,這個庫的程序,都無法執(zhí)行了。

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
c動態(tài)庫,是默認(rèn)提供的
gcc默認(rèn)形成可執(zhí)行程序,默認(rèn)采用動態(tài)鏈接

查看文件類型:

file my.exe

使用的是動態(tài)庫鏈接:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
動態(tài)庫和動態(tài)鏈接的優(yōu)缺點:

  1. 不能丟失
  2. 節(jié)約資源

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
重新創(chuàng)建一個文件夾,把test.c移動到里面,然后執(zhí)行。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
默認(rèn)采用動態(tài)鏈接
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

4.2 靜態(tài)鏈接

接上個例子:小明在買了網(wǎng)吧9號機(jī)器(庫的方法),這樣每次上網(wǎng)(執(zhí)行程序)都能用,不需要這個網(wǎng)吧了,每次執(zhí)行程序就拷貝到自己的電腦上,這個過程叫靜態(tài)鏈接。這個網(wǎng)吧賣電腦就是靜態(tài)庫。
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

靜態(tài)鏈接就是:在編譯的時候,把庫中的方法,拷貝到自己的可執(zhí)行程序中。

靜態(tài)庫和靜態(tài)鏈接的優(yōu)缺點:

  1. 一旦形成,與庫無關(guān)
  2. 浪費(fèi)資源

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
形成靜態(tài)鏈接:

gcc -o mytest-static test.c -static -

發(fā)現(xiàn)報錯了:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
這個是因為在默認(rèn)情況下,一般靜態(tài)庫都是默認(rèn)沒有安裝的。

安裝命令是:

 sudo yum install -y glibc-static libstdc++-static

然后再執(zhí)行:
【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言
再ldd看看:

ldd mytest-static

【Linux】編譯器-gcc/g++使用,Linux,linux,運(yùn)維,服務(wù)器,c++,c語言

有問題請指出,大家一起進(jìn)步?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-838584.html

到了這里,關(guān)于【Linux】編譯器-gcc/g++使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】Linux編譯器 gcc/g++的使用&&初識動靜態(tài)鏈接庫

    【Linux】Linux編譯器 gcc/g++的使用&&初識動靜態(tài)鏈接庫

    ? ???個人主頁:@Sherry的成長之路 ??學(xué)習(xí)社區(qū):Sherry的成長之路(個人社區(qū)) ??專欄鏈接:Linux ?? 長路漫漫浩浩,萬事皆有期待 上一篇博客:【Linux】Linux環(huán)境基礎(chǔ)工具的基本使用及配置(yum、vim) 在上一篇 Linux 博客中,我們講解了 vim 編輯器的使用,可以在 Linux 上寫

    2024年02月11日
    瀏覽(33)
  • 【Linux】Linux編譯器 gcc 的使用 | 動靜態(tài)庫的初步認(rèn)識

    【Linux】Linux編譯器 gcc 的使用 | 動靜態(tài)庫的初步認(rèn)識

    ??作者主頁:@安 度 因 ??學(xué)習(xí)社區(qū):StackFrame ??專欄鏈接:Linux

    2024年01月15日
    瀏覽(23)
  • 【Linux】編譯器-gcc/g++與調(diào)試器-gdb的使用

    【Linux】編譯器-gcc/g++與調(diào)試器-gdb的使用

    ?? 樊梓慕: 個人主頁 ??? 個人專欄: 《C語言》《數(shù)據(jù)結(jié)構(gòu)》《藍(lán)橋杯試題》《LeetCode刷題筆記》《實訓(xùn)項目》《C++》《Linux》 ?? 每一個不曾起舞的日子,都是對生命的辜負(fù) 目錄 前言 1.gcc/g++語法 2.gcc的使用及編譯器是如何\\\"翻譯\\\"代碼的? (1)預(yù)處理 (2)編譯 (3)匯編

    2024年02月04日
    瀏覽(19)
  • 【Linux】編譯器gcc和g++與調(diào)試器gdb的使用

    【Linux】編譯器gcc和g++與調(diào)試器gdb的使用

    我們知道,一個程序被運(yùn)行起來之后需要經(jīng)歷四個階段然后才變成一個可執(zhí)行的程序,他們分別為:預(yù)處理,編譯,匯編和鏈接。下面我們將介紹這四個階段的操作,測試代碼如下: 1.1 預(yù)處理 預(yù)處理也叫預(yù)編譯,程序在預(yù)處理階段會完成如下操作: 展開頭文件,將頭文件中

    2024年02月07日
    瀏覽(29)
  • 【探索Linux】—— 強(qiáng)大的命令行工具 P.4(編譯器 gcc/g++ 使用)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.4(編譯器 gcc/g++ 使用)

    前面我們講了C語言的基礎(chǔ)知識,也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的一些知識,也學(xué)習(xí)了一些Linux的基本操作,也了解并學(xué)習(xí)了有關(guān)Linux開發(fā)工具vim ,也相信大家都掌握的不錯,今天博主帶大家了解一下Linux編譯器 gcc/g++ 使用, 下面話不多說坐穩(wěn)扶好咱們要開車了!!

    2024年02月12日
    瀏覽(16)
  • Linux:編譯器 - gcc

    Linux:編譯器 - gcc

    GCC(英文全拼:GNU Compiler Collection)是 GNU 工具鏈的主要組成部分,是一套以 GPL 和 LGPL 許可證發(fā)布的程序語言編譯器自由軟件,由 Richard Stallman 于 1985 年開始開發(fā)。 gcc是GCC中的C語言編譯器,而g++是GCC中的C++編譯器。本博客只講解gcc,g++的語法和選項和gcc都是一致的。 gcc 編譯

    2024年04月14日
    瀏覽(22)
  • Linux GCC常用命令以及GCC編譯器

    GCC 是編譯工具,它的意思是 GNU C Compiler 。經(jīng)過了這么多年的發(fā)展,GCC 已經(jīng)不僅僅能支持 C 語言;它現(xiàn)在還支持 Ada 語言、C++ 語言、Java 語言、Objective C 語言、Pascal 語言、COBOL語言,以及支持函數(shù)式編程和邏輯編程的 Mercury 語言等等。而 GCC 也不再單只是 GNU C 語言編譯器的意

    2024年02月05日
    瀏覽(32)
  • Linux編譯器gcc/g++

    Linux編譯器gcc/g++

    以gcc編譯 以g++編譯,但是此時會發(fā)現(xiàn)沒有g(shù)++這個指令,所有需要安裝它,安裝指令 yum install gcc gcc-c++ gcc和g++都會形成可執(zhí)行文件a.out gcc只能編譯c語言代碼,g++能編譯c/c++ 以c程序為例,來看看它從一個文本類的c程序編譯成計算機(jī)可以認(rèn)識的二進(jìn)制程序它需要經(jīng)過四個階段 預(yù)

    2024年02月10日
    瀏覽(26)
  • Linux——gcc/g++編譯器

    Linux——gcc/g++編譯器

    目錄 I.Linux編譯器 1.gcc/g++編譯器 在C代碼生成可執(zhí)行程序的過程中,會有四個過程: 1預(yù)處理,2編譯,3匯編,4鏈接 Linux對.c文件分辨進(jìn)行預(yù)處理,編譯,匯編三大步指令: 預(yù)處理指令: 編譯指令: 匯編指令: 接下來說一說鏈接過程: II.動靜態(tài)鏈接? 一.動態(tài)鏈接 二.靜態(tài)鏈接

    2024年02月04日
    瀏覽(59)
  • 《Linux從練氣到飛升》No.05 Linux編譯器gcc/g++的使用及編譯過程 【云邊有個小賣部】上新

    《Linux從練氣到飛升》No.05 Linux編譯器gcc/g++的使用及編譯過程 【云邊有個小賣部】上新

    ??作者: 主頁 我的專欄 C語言從0到1 探秘C++ 數(shù)據(jù)結(jié)構(gòu)從0到1 探秘Linux 菜鳥刷題集 ??歡迎關(guān)注:??點贊??收藏??留言 ?? 碼字不易,你的??點贊??收藏??關(guān)注對我真的很重要,有問題可在評論區(qū)提出,感謝閱讀?。?! 本篇我們將講述gcc/g++的使用以及它是如何完成一

    2024年02月14日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包