1. 程式人生 > >Linux 編譯器之 GCC

Linux 編譯器之 GCC

上一節我們學習了 vim 編輯器,接下來我們一起學習 gcc 編譯器,這裡,我們要區分編輯器和編譯器有何不同?

編輯器是指我用它來寫程式的(編輯程式碼),而我們寫的程式碼語句,電腦是不懂的,我們需要把它轉成電腦能懂的語句,編譯器就是這樣的轉化工具。就是說,我們用編輯器編寫程式,由編譯器編譯後才可以執行

編譯器是將易於編寫、閱讀和維護的高階計算機語言翻譯為計算機能解讀、執行的低階機器語言的程式。

GCC(GNU Compiler Collection,GNU 編譯器套件),是由 GNU 開發的程式語言編譯器。GCC 原本作為GNU作業系統的官方編譯器,現已被大多數類Unix作業系統(如 Linux、BSD、Mac OS X 等)採納為標準的編譯器,GCC 同樣適用於微軟的 Windows。

GCC 最初用於編譯 C 語言,隨著專案的發展 GCC 已經成為了能夠編譯 C、C++、Java、Ada、fortran、Object C、Object C++、Go 語言的編譯器大家族。

這裡只是簡單介紹如何編譯 C 程式或者 C++ 程式最終成為一個可執行程式。

gcc識別的副檔名如下:

.c C 語言檔案

.i 預處理後的 C 語言檔案

.C、.cc、.cp、.cpp、.c++、.cxx C++語言檔案

.ii 預處理後的 C++ 語言檔案

.S 彙編檔案(使用者自己新建的彙編檔案)

.s 預處理後的彙編檔案

.o 編譯後的目標檔案

.a 目標檔案的靜態連結庫(連結時使用)

.so 目標檔案的動態連結庫(連結、執行時使用)

gcc 和 g++ 編譯器的編譯過程

1、預處理

2、編譯

3、彙編

4、連結


gcc 常用編譯應用例項


分步編譯

1)gcc -E hello.c -o hello.i

2)gcc -S hello.i -o hello.s

3)gcc -c hello.s -o hello.o

4)gcc    hello.o -o hello_elf

編譯選項說明:

-o file 指定生成的輸出檔名為 file

-E 只進行預處理

-S 只進行預處理和編譯

-c 只進行預處理、編譯和彙編

檔名字尾說明:

.c C 語言檔案

.i 預處理後的 C 語言檔案

.s 預處理後的彙編檔案

.o 編譯後的目標檔案


程式編譯成功後,通過“./”執行這個可執行程式。


常用編譯(還是經過:預處理、編譯、彙編、連結的過程):

gcc hello.c -o demo


如果是 C++ 程式碼,只需改用 g++ 編譯器即可。

如果沒有 g++ 編譯器,線上安裝即可:


使用 g++ 編譯 c++ 程式


gcc、g++ 編譯的其它一些選項

-v 顯示製作gcc工具時的配置命令,顯示前處理器、編譯器的版本號


-Wall 生成所有級別的警告資訊
-w關閉所有警告,建議不使用此選項



-Idir將dir目錄加入標頭檔案搜尋目錄列表,優先在dir目錄中查詢包含的標頭檔案

-Ldir  將dir目錄加入庫檔案目錄列表,優先在dir目錄中查詢庫檔案

-lname  連結庫為name的庫

-static  連結時使用靜態庫

-shared  編譯動態庫

相關推薦

Linux 編譯器 GCC

上一節我們學習了 vim 編輯器,接下來我們一起學習 gcc 編譯器,這裡,我們要區分編輯器和編譯器有何不同? 編輯器是指我用它來寫程式的(編輯程式碼),而我們寫的程式碼語句,電腦是不懂的,我們需要把它轉成電腦能懂的語句,編譯器就是這樣的轉化工具。就是說,我們用編輯器

Linuxgcc與g++編譯器

1.2 -c span logs style div out com 成了 1.gcc編譯器   gcc編譯器開發初期定位為C編譯器(GNU C Compiler),但隨著時間的發展gcc編譯器能夠支持多種語言。 1.1 gcc編譯器的使用   假如我們已經有了.c文件名稱

嵌入式Linux開發工具gcc編譯器

gcc的簡介 編譯器gcc所具備的優點 1、GNU CC(簡稱為gcc)是GNU專案中符合ANSI C標準的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程式。gcc不僅功能強大,而且可以編譯如C、C++、Object C、Java、和Ad

Linux——CentOS7安裝gcc編譯器詳解

com eps 以及 鏡像 lib c++ c++編譯 c、c++ lin 使用yum安裝gcc 使用yum命令安裝還是非常easy的。 yum -y install gcc gcc-c++ kernel-devel //安裝gcc、c++編譯器以及內核文件 手動安裝gc

Linux編譯器——gcc

一、介紹      GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的程式語言編譯器。GCC原本作為GNU作業系統的官方編譯器,現已被大多數類Unix作業系統(如Linux、BSD、Mac OS X等)採納為標準

Linux中的gcc編譯器

Gcc命令使用GNU推出的基於C/C++的編譯器,是開放原始碼領域應用最廣泛的編譯器,具有功能強大,編譯程式碼支援效能優化等特點。 語法: gcc(選項)(引數) 選項: -o:指定生成的輸出檔案; -E:僅執行編譯預處理; -S:將C程式碼轉換為彙編程式碼;

Linux學習(C語言學習Gcc

Linux的學習需要對C語言有一個透徹性的瞭解,需要有非常好的C語言基礎,Gcc是Linux中的C檔案的一個編譯器(當然也不只侷限於C檔案)。 Gcc最初的全名是GNU C Compiler 隨著Gcc支援的語言越來越多,它的名稱變成了GNU Compiler

Linux C/C++ 編譯器cc\gcc\g++\c++區別

使用Linux系統的編譯c或者c++的人,都知道Linux系統的編譯器有cc\gcc\g++\c++,但是他們之間到底是什麼關係呢? 首先到系統的/usr/bin路徑下,使用命令:ll | grep cc,可以看到如下: 由此,可以知道LInux系統下,cc就是gcc

LinuxGCC學習筆記

GCC(全稱:GNU C Compiler),隨著GCC支援的語言越來越多,它的名稱變成了GNU Compiler Collection。  gcc -o 輸出檔名 輸入檔名 預處理:cpp -o *.i *.c(gcc -E)  編譯:cc1 -o *.s *.

Linux作業系統至gcc編譯器、makefile

gcc編譯器:         將高階語言程式碼編譯成為機器可識別的指令程式碼         編譯檔案         編譯步驟:      

基於Linux下的GCC編譯器的內部預巨集定義與__attribute__屬性

***************************************************************************************************************************** 作者:EasyWav

linux開發交叉編譯器環境搭建系統相容的問題

 這段時間我在用成都英創的6800開發板進行linux的開發學習。原來他們家提供的開發環境是eclipse.exe.但是在這版中他們提供了交叉環境的搭建教程,並提供了QT程式設計的。所以我也開始搭建環境的技術之旅。 在按照英創提供的QT安裝教程中他提供的編譯器是32位系統

Linux編譯器gcc/g++的使用

庫的概念 1.庫的定義   本質上來說庫是一種可執行程式碼的二進位制形式,可以被作業系統載入記憶體執行。 2.庫的分類   linux 下的庫有兩種:靜態庫和共享庫(動態庫)。 二者的不同點在於程式碼被載入的時刻不同。 靜態庫的程式碼在編譯過程中

linux和windows gcc g++ vc編譯器位元組對齊

首先可以肯定的說,肯定和編譯器有關,vc編譯器和gcc,g++編譯器肯定不一樣,不說明是什麼編譯器什麼系統下問你結構體長度就是在耍流氓。 (1)vc編譯器下結構體成員首地址地址必須被該結構體成員長度整除,打個比方,double a的首地址如果為0x06, 那是不行的,再填2

LinuxGCC命令 -- 解析GCC編譯的四個過程

在Linux下進行C語言程式設計,必然要採用GNU GCC來編譯C原始碼生成可執行程式。Gcc指令的一般格式為: Gcc [選項] 要編譯的檔案 [選項] [目標檔案]。其中,目標檔案可預設,Gcc預設生成可執行的檔名為:編譯檔案.out 看一下經典入門程式"Hello W

關於linux環境下GCC與g++編譯器高低版本轉換的問題

在安裝完gcc編譯器之後 在/usr/bin目錄下執行以下命令  $ ls -l gcc* lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6 -rwxr-xr-x 1 root roo

linux開發工具gcc

img alt nbsp bsp linu 開發工具 info 鏈接 開發 首先gcc編譯鏈接的一個實例如下所示: 接下來看一下gcc的常見選項: gcc的使用示例: linux開發工具之gcc

我的Linux自學

記錄學習 作為一只菜鳥,並且沒有任何Linux的經驗,我從網上下載的視頻自學Linux。歡迎各位新手或大師指點,開通博客意在記錄自己學習的點滴。 由於項目在公安行業內,系統的版本無法跟現代的大型網後臺的系統版本相提並論。公安系統的版本大多停留在四五年前,因為是自學,下載的視頻也是四五年前的,所以後

Linux學習用戶管理

shell 已過期 useradd 系統 user 影子 所屬組 有用 刪除用戶 /etc/passwd Linux系統將用戶信息保存在文件/etc/passwd中 文件中一行代表一個用戶,所以文件有多少行就代表系統有多少用戶。每一行都被用冒號隔開分成7個字段,我們先了解

linux應用vim的安裝與配置(centos)

utf8 power scroll pbo gb2312 nco pla red vma 1.vim的安裝 #yum search vim //查看vim相關軟件信息 #yum install -y vim* //在線安裝vim 2.vim的配置 (1)~/.vimi