Linux系統GCC常用命令和GCC編譯過程描述
前言:
GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因為它原本只能處理 C語言。GCC 很快地擴充套件,變得可處理 C++。後來又
擴充套件能夠支援更多程式語言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各類處理器架構上的組合語言等,所以改
名GNU編譯器套件(GNU Compiler Collection)。(百度百科,想了解自己查詢)
一.GCC程式的編譯過程大概分四個階段
- 預處理(Pre-Processing)
- 編譯(Compiling)
- 彙編(Assembling)
- 連結(Linking)
二.簡單HelloWorld程式的編譯過程
示例:HelloWorld.c
1 #include <stdio.h> 2 int main() 3 { 4 printf("Hello World!\n"); 5 return 0; 6 }
Ctrl+Alt+T --->開啟控制檯--->輸入vim HelloWorld.c
1. 執行如下命令:$ gcc -o HelloWorld HelloWorld.c
執行如下 : $ ./HelloWorld
輸出: HelloWorld!
2. 分步編譯如下:
(1) $ gcc –E HelloWorld.c -o HelloWorld.i
可以輸出HelloWorld.i檔案中存放著HelloWorld.c經預處理之後的程式碼。開啟HelloWorld.i檔案,看一看,就明白了。後面那條指令,是直接在命令列視窗中輸出預處理後的程式碼.
gcc的-E選項,可以讓編譯器在預處理後停止,並輸出預處理結果。在本例中,預處理結果就是將stdio.h 檔案中的內容插入到HelloWorld.c中了。
//預處理結束
//這時候你看一下HelloWorld.i ,可以看到插進去了很多東西。
(2) $ gcc –S HelloWorld.i
gcc的-S選項,表示在程式編譯期間,在生成彙編程式碼後,停止,-o輸出彙編程式碼檔案。
檢視下HelloWorld.s //生成彙編程式碼後結束
(3)生成彙編程式碼檔案HelloWorld.s以後,需要gas彙編器負責將其編譯為目標檔案,如下:
$ gcc –c HelloWorld.c
或者:
$ gcc -c HelloWorld.c –o HelloWorld.o
或者:
$ gcc -c HelloWorld.i -o HelloWorld.o
//編譯結束
//生成 HelloWorld.o檔案
(4) $ gcc HelloWorld.o –o HelloWorld 生成連線,可執行檔案(HellWorld重新生成的可執行檔案)
gcc聯結器是gas提供的,負責將程式的目標檔案與所需的所有附加的目標檔案連線起來,最終生成可執行檔案。
附加的目標檔案包括靜態連線庫和動態連線庫。
對於上一小節中生成的HelloWorld.o,將其與C標準輸入輸出庫進行連線,最終生成程式HelloWorld可執行檔案
輸入命令:gcc HelloWorld.o –o HelloWorld--->生成如下圖:
3. 多個程式檔案的編譯
一般情況一個程式都是有若干個檔案原始檔組成,所以編譯的時候需要形成多個編譯單元,使用GCC編譯器可以將多個原始檔編譯成所需要的程式
比如:原始檔有main.c a.c b.c 最終生成一個可執行的檔案main
比如:一個工程有main.c a.c b.c生成test的可執行檔案。
編譯命令如下:
$ gcc –c main.c a.c b.c –o main
或者:
$ gcc –o main main.c a.c b.c
GCC仍然會按照預處理、編譯和連結的過程依次進行
大概過程相當於:
gcc -c main.c -o main.o
gcc -c a.c -o a.o
gcc -c b.c -o b.o
最後:
gcc main.o a.o b.o -o main
相關推薦
Linux系統GCC常用命令和GCC編譯過程描述
前言: GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因為它原本只能處理 C語言。GCC 很快地擴充套件,變得可處理 C++。後來又 擴充套件能夠支援更多程式語言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各類處理器架構上的組合語言等,所以改
gcc 常用命令和引數
.h //C/C++標頭檔案 .c //C的原始檔 .cc //C++ 的原始檔 .cpp //C++ 的原始檔 .cxx //C++ 的原始檔 .i //gcc 編譯的過程檔
Linux GCC常用命令 與 gcc 編譯器常用的命令列引數一覽
轉載自:http://www.cnblogs.com/sunyubo/archive/2011/09/06/2282054.html 這些常用的 gcc/g++ 命令列引數,你都知道麼? 1. gcc -E source_file.c-E,只執行到預編譯。直接輸出預編譯結果
linux系統配置常用命令整理
sta 字母 port 內存大小 查看內存 四十七 mes memfree 監聽 一、 cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "phys
Linux 系統監控常用命令
索引 zest rec inter 常用命令 節點 bash intern 虛擬 簡介 列舉操作系統級監控常用的幾個方法,建議收藏使用 CPU top 命令可用於監控系統整體負載,包括cpu、內存使用等,能夠實時顯示系統中各個進程的資源占用狀況 輸出樣例 top - 19:
《Linux系統》之"皮毛系列"(三) Linux系統的常用命令
通過前兩篇文章的介紹,我們知道Linux系統的理念是:一切皆檔案。而檔案,就要涉及到命名規範,如下所示: 1)除了/之外,所有字元都合法 2)有些字元最好不要用,如空格符、製表符、字元@#$&()-等 3)避免使用.作為普通檔名的第一個字元。 4)大小寫敏感 今天我們來
Linux-系統管理-常用命令(上)
以下介紹常用的幾個系統分析的命令以及常用方法: vmstat vmstat 是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,很多Linux發行版本都預設安裝了此命令工具。當然,不止對虛擬記憶體有統計,還可以利用vmst
linux的一些常用命令和emacs的一些快捷鍵
本人是linux新手,把一些常用的命令記在這裡。 檢視ubuntu版本 sudo lsb_release -a 安裝軟體 sudo apt-get install *** eg:sudo apt-get install apt-file 刪除軟體 sudo apt-ge
企業Linux系統管理員常用命令大全例項解析(1)
作為一名企業Linux系統管理員,熟悉並熟練運用一些常用的命令是必不可少的,對裝置即檔案的Linux系統來說,Linux系統管理的命令是它正常執行的核心。筆者根據實際工作總結一些常用指令,附上一些
Linux系統下常用命令
刪除 date pack package 進行 查找 sea 新的 ret yum [options] [command] [package ...]options:可選,選項包括-h(幫助),-y(當安裝過程提示選擇全部為"yes"),-q(不顯示安裝的過程)等等。com
linux常用命令以及gcc、gdb、vim的安裝和配置
1. linux是一個類unix作業系統 vmware--虛擬出一個硬體環境用於安裝一個作業系統 虛擬機器--在vmware中的這個虛擬的這個硬體環境/安裝的這個作業系統 xshell功能:遠端連線到虛擬機器/伺服器上堆虛擬機器
Linux GCC常用命令
靜態加載 配置文件 情況 窗口 連接器 執行 二進制 c 語言 標準輸入輸出 Linux GCC常用命令 1簡介 2簡單編譯 2.1預處理 2.2編譯為匯編代碼(Compilation) 2.3匯編(Assembly) 2.4連接(Linking) 3
Linux系統vi/vim的常用命令和操作
1 、游標移動命令: 0:移動到游標所在行的行首[Home] $:移動到游標所在行的行尾[End] ctrl+d:向下半頁 ctrl+f:向下一頁PageDown ctrl+u:向上半頁 ctrl+b:向上一頁PageUp H:移動到視窗的第一行 M:移動到視
linux系統管理文件和目錄管理命令測試
linux 簡單 命令 1. 查看系統中cpu及內存的信息。[root@xuexi ~]# cat /proc/cpuinfo (查看cpu)processor : 0 vendor_id :GenuineIntelcpu family : 6model : 142mode
Linux操作系統及常用命令
命令1. 常用命令:1.1 ls命令:1.2 cd 命令: 1.3 cal命令 cal是calendar的意思1.4 echo 命令echo -necho -e "The year is 2018. \nToday is 8. "2. 命令類型:3. date:時間管理:Linux:
查看linux系統常用的命令,Linux查看系統配置常用命令
程序 任務 host temp lan linked linux cpu 活動 mic 一、linux CPU大小 cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physi
《Linux學習並不難》Linux字符界面(2):關閉和重啟Linux系統之shutdown命令
Linux shutdown 關機 3.2 《Linux學習並不難》Linux字符界面(2):關閉和重啟Linux系統之shutdown命令shutdown命令可以安全地關閉或重啟Linux系統,有些用戶會使用直接斷掉電源的方式來關閉計算機,這是十分危險的。Linux系統與Windows不同,其
第二課:第一講Linux操作系統及常用命令
d第二課:第一講Linux操作系統及常用命令1.liunx中“X”表示圖像顯示協議X-window有三種:Gnome,KDE,Xface2.windows->.dll(dynamic link library)liunx->.so (shared object)3.認證:authenticatio
第二講:第二課Linux操作系統及常用命令
排版 普通用戶 命令格式 配置文件 see 電池 硬件 -h comm 第二講:第二課Linux操作系統及常用命令1.date-顯示系統時間修改時間2.liunx記時模式:晶體振蕩器,高級的每萬年誤差一秒。主機上就是晶體振蕩器紀時的。晶體振蕩器要供電才行,主板上有紐扣電池。
gcc常用命令
lin href 支持 可執行文件 編譯預處理 操作 執行文件 多源 -o2 gcc命令使用GNU推出的基於C/C++的編譯器,是開放源代碼領域應用最廣泛的編譯器,具有功能強大,編譯代碼支持性能優化等特點。現在很多程序員都應用GCC,怎樣才能更好的應用GCC。目前,GCC