Linux系統(tǒng)下gcc命令使用詳解
1.gcc的安裝(以Ubuntu為例) sudo apt-get install build-essential
安裝完后可以通過 gcc --version 查看版本。
讓我們?cè)谕ㄟ^gcc編譯可執(zhí)行文件的過程中掌握其基礎(chǔ)應(yīng)用。
準(zhǔn)備: 先在當(dāng)前目錄下 使用vim新建一個(gè).c文件 例如 666.c
$ vim 666.c
(vim的使用可在我的另一篇博客有詳細(xì)的敘述,這里不多在贅述)
插入一段代碼。
#include <stdio.h>
main()
{
int a,i;
a=6;
for(i=0;i<3;i++)
{
printf("%d",a);
}
}

(每次我們用 cat 查看)
一.預(yù)處理
1.預(yù)處理通過對(duì)宏定義(像#define)進(jìn)行展開,對(duì)頭文件(像 stdio.h)進(jìn)行展開,對(duì)條件進(jìn)行(像ifdef)編譯,展開所有宏,刪除所有注釋(像"//").預(yù)處理cpp把源代碼,頭文件預(yù)編成一個(gè).i文件。(注意這時(shí)并不檢查語法,所以即使有語法錯(cuò)誤也不會(huì)報(bào)錯(cuò)。)
2.命令:
$ gcc -E (源文件名) -o (預(yù)處理文件名)
或者:
$ gcc (源文件名) > (預(yù)處理文件名)
例如按666.c 來說,預(yù)處理時(shí)可以是 :
gcc -E 666.c -o 666.i
也可以是 gcc 666.c > 666.i

二. 編譯
1.編譯也就是檢查語法是否錯(cuò)誤,將預(yù)處理過的文件編譯成匯編文件。
2.命令:
$ gcc -S (源文件) -o (匯編文件)
例如 gcc -S 666.i -o 666.s

三.匯編
1. 匯編也就是將匯編文件生成目標(biāo)文件(二進(jìn)制文件)通過匯編,文本代碼變成了二進(jìn)制代碼。(二進(jìn)制代碼文件以.o為后綴名)。
2.命令:
$ gcc -c (匯編文件) -o (目標(biāo)文件)
例如 gcc -c 666.s -o 666.o

(這時(shí)候因?yàn)槭嵌M(jìn)制文件了,所以會(huì)亂碼)
四.鏈接
1. 鏈接找到依賴的庫文件(靜態(tài)與動(dòng)態(tài)),將目標(biāo)文件鏈接為可執(zhí)行程序。
$ gcc -c [目標(biāo)文件] -o [可執(zhí)行程序] -l[動(dòng)態(tài)庫名]
假如沒有動(dòng)態(tài)庫的話(一般)
直接
$ gcc -c [目標(biāo)文件] -o [可執(zhí)行程序]
例如 gcc -c 666.o -o 666
此時(shí)會(huì)生成可執(zhí)行程序 666
如果想執(zhí)行使用該命令:
$ ./可執(zhí)行程序
其中./是在當(dāng)前目錄下的意思。
例如 ./666

(注意:在一般我們使用時(shí) 如果使用 gcc 可執(zhí)行文件名,會(huì)默認(rèn)生成a.out 可執(zhí)行文件,這時(shí)我們直接執(zhí)行它時(shí)用 ./a.out )
到此這篇關(guān)于Linux系統(tǒng)下gcc命令使用詳解的文章就介紹到這了,更多相關(guān)Linux gcc命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的方法
使用 logrotate 命令可以手動(dòng)執(zhí)行日志滾動(dòng)的操作。本文將要介紹的就是手動(dòng)進(jìn)行日志滾動(dòng)的方法,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-03-03
Centos7 mysql數(shù)據(jù)庫安裝及配置實(shí)現(xiàn)教程
這篇文章主要介紹了Centos7 mysql數(shù)據(jù)庫安裝及配置實(shí)現(xiàn)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
yum 安裝memcache permission denied(拒絕訪問) 問題
這篇文章主要介紹了yum 安裝memcache permission denied(拒絕訪問) 問題,需要的朋友可以參考下2017-03-03
Ubuntu下Subversion(SVN)的快速安裝與配置詳解
這篇文章主要介紹了Ubuntu下Subversion(SVN)的快速安裝與配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
ssh遠(yuǎn)程登陸沒有用戶名和主機(jī)名的解決方法
這篇文章主要給大家分享了ssh遠(yuǎn)程登陸沒有用戶名和主機(jī)名的解決方法,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03

