溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

GCC編譯命令有哪些

發(fā)布時間:2021-11-11 18:06:14 來源:億速云 閱讀:144 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家介紹GCC編譯命令有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

大家沒有IDE時候,可能一開始有點不習(xí)慣,但是堅持用一段時間,你就會愛上文本編輯器+編譯器的模式了,不管是編譯速度還是編譯時的界面而言,這都方式都比IDE炫酷,畢竟再怎么樣也是免費的,是吧。
這里再來講一下終端,可能絕大多數(shù)同學(xué)以前只使用過Windows底下的“CMD”,即“命令提示符”,我還聽過有人把它叫做DOS界面等等。而在Linux里面有一個長得差不多的東西,叫做終端,或者控制臺等等。如圖1所示。
                           
GCC編譯命令有哪些
圖1 Windows下的“命令提示符”和Linux下的“終端”

看圖1上的兩張圖片都是黑不溜秋的界面,兩個東西難道不一樣嗎?其實啊,這兩個是完全從設(shè)計哲學(xué)角度就不一樣的東西。我們先來說終端,這個終端是Linux從Unix時代繼承過來的產(chǎn)物,可能現(xiàn)在提到計算機,大家第一反應(yīng)就是應(yīng)該像筆記本或者臺式機一樣的東西,很小巧,每人一臺在辦公室辦公。其實早期的計算機生成成本太貴,體積太大,都是以小型機或者大型機形式存在的,可能每個公司也就一臺,其他用戶都是使用串口插到這臺大型機上面來工作的,他們面前只有一個叫做“終端”(或者控制臺的設(shè)備,上面跑的程序叫做Shell)檔或者其他辦公,因此Unix最早期的設(shè)計哲學(xué)就是中心化數(shù)據(jù)處理的多用戶多任務(wù)操作系統(tǒng),而Linux完美繼承了這一點。這種方式是不是有點類似于現(xiàn)在的服務(wù)器架構(gòu)?這就是為什么,其他領(lǐng)域Windows都比Linux占優(yōu)勢,就是服務(wù)器領(lǐng)域這塊蛋糕一直在Linux嘴里。后來由于Linux操作系統(tǒng)引入了GUI,而這些GUI都只是Linux系統(tǒng)里面的一個進(jìn)程,真正的Linux還是那個終端。如圖2所示。

GCC編譯命令有哪些
圖2 歷史上的“終端

而Windows不一樣,Windows誕生之初,個人電腦的業(yè)務(wù)就已經(jīng)開始蓬勃發(fā)展,而他們最早為IBM PC開發(fā)的DOS系統(tǒng)叫做MS-DOS,當(dāng)時有很多版本的DOS,微軟的DOS只是其中一個,順便說一下,DOS都是單用戶,單任務(wù)操作系統(tǒng),僅僅是為了用戶操作磁盤里面的數(shù)據(jù)和軟件而設(shè)計的。后來微軟真正獨領(lǐng)操作系統(tǒng)風(fēng)騷的,是其推出了Windows,其實Windows界面和最早只是DOS里面的一個程序而已,用過Windows95的就知道,開完機電腦呈現(xiàn)給你的是一個命令行,要輸入一長串命令才可以進(jìn)入操作系統(tǒng),這種機制直到Windows XP才被取消,Windows成為真正的Windows。理所當(dāng)然,由于某些用戶的習(xí)慣“DOS界面”下來了。
DOS和Shell的區(qū)別大致如下。
1,shell區(qū)分大小寫,DOS不區(qū)分大小寫;
2,一般而言,shell的命令的開關(guān)可以簡寫(比如說“-a -l“可以簡寫為“-al“),而DOS的則不允許;
3,在腳本編寫上的語法差別極大,比如說:兩者的流程控制語句語法不同,變量的語法不同等;
4,shell可以在UNIX、GNU/Linux和Win下(cygwin bash shell)工作,DOS則還沒有聽說過能在Win/DOS以外的系統(tǒng)中工作;
5,shell原生支持正則表達(dá)式,DOS則不是。
后來Windows 7之后,微軟也在個人操作系統(tǒng)上面加入了一個叫做“Power shell”的軟件,而我們之前VS Code里面自帶的終端軟件就是Powershell。以上就是Shell和命令提示符的介紹。
Shell命令在操作時,輸入命令的格式為:命令參數(shù)1 參數(shù)2 … 參數(shù)n。來看之前常用的編譯命令“gcc -o hello helloeorld.c”如圖3所示。注意,在shell里運行GCC一定要區(qū)分所有大小寫。

GCC編譯命令有哪些
GCC編譯命令有哪些
圖3 GCC常用選項

GCC的參數(shù)功能還有很多,我們再一起來看幾個。如圖4所示,這個表只是羅列了幾個常用的參數(shù),如果有其他新參數(shù)需要使用,我們到時候再說。注意一下圖3里面的參數(shù)1就是我后文中所說的“選項”,這兩個是一回事情。
還是以之前的helloworld.c為例子,我們之前說到,一個程序的編譯分成“預(yù)處理”->“編譯”->“匯編”->“鏈接”這四個步驟,接下來我們用gcc一步步來看一下他們所產(chǎn)生的中間文件。
(1)只激活預(yù)處理,不進(jìn)行后續(xù)三步,此時使用的命令應(yīng)該為“gcc -E ./helloworld.c > propress.c”,這個功能需要將預(yù)處理完成之后的文件存儲到一個新的文件里面,我們這里使用了“propress.c”這個名字。如圖4所示。

GCC編譯命令有哪些
圖4 gcc預(yù)處理命令

(2)只做編譯,不進(jìn)行后續(xù)步驟。此時使用的命令應(yīng)該為“gcc -S .\helloworld.c”,運行完成后,編譯器會在當(dāng)前文件夾里面輸出一個名叫helloworld.s的文件,它就是GCC生成的匯編語言。如圖5所示。

GCC編譯命令有哪些
圖5 gcc生成匯編語言文件
 
(3)只生成目標(biāo)文件,不進(jìn)行后續(xù)的鏈接步驟。此時使用的命令應(yīng)該為“gcc -c .\helloworld.c”,運行完成后,編譯器會在當(dāng)前文件夾里面輸出一個名叫helloworld.o的文件,它就是GCC生成的目標(biāo)文件。如圖6所示。VS Code一開始可能無法打開二進(jìn)制文件,大家需要去應(yīng)用市場自行下載一個叫“binary”的插件

GCC編譯命令有哪些
圖6 目標(biāo)文件

(4)最后一步就是利用gcc生成最后的可執(zhí)行文件,使用命令“gcc -o helloworld helloworld.c”最終會生成可執(zhí)行文件helloworld.exe,注意此時的.exe后綴名是自動加上的,可以隱藏。
此外,如果大家對終端操作起來還是覺得不習(xí)慣,有一個叫做Dev Cpp的軟件也是個集成MinGW的IDE,大家可以自己去嘗試。

關(guān)于GCC編譯命令有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

gcc
AI