在Linux系统终端利用ggc,大学计算机:Linux下C编程.pdf
第 1 章 編譯與調(diào)試
1.1 編譯的概念和理解
在進行 C 程序開發(fā)時,編譯就是將編寫的 C 語言代碼變成可執(zhí)行程序的過程,這一過程
是由編譯器來完成的。編譯器就是完成程序編譯工作的軟件,在進行程序編譯時完成了一系
列復(fù)雜的過程。
1.1.1 程序編譯的過程
在執(zhí)行這一操作時,程序完成了復(fù)雜的過程。一個程序的編譯,需要完成詞法分析、語
法分析、中間代碼生成、代碼優(yōu)化、目標代碼生成。本章將講解這些步驟的作用與原理。
(1)詞法分析。指的是對由字符組成的單詞進行處理,從左至右逐個字符地對源程序進
行掃描,產(chǎn)生一個個的單詞符號。然后把字符串的源程序改造成為單詞符號串的中間程序。
在編譯程序時,這一過程是自動完成的。編譯程序會對代碼的每一個單詞進行檢查。如果單
詞發(fā)生錯誤,編譯過程就會停止并顯示錯誤。這時需要對程序中的錯誤進行修改。
(2 )語法分析。語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規(guī)
則的語句。例如,需要檢查表達式、賦值、循環(huán)等結(jié)構(gòu)是否完整和符合使用規(guī)則。在語法分
析時,會分析出程序中錯誤的語句,并顯示出結(jié)果。如果語法發(fā)生錯誤,編譯任務(wù)是不能完
成的。
(3 )中間代碼生成。中間代碼是源程序的一種內(nèi)部表示,或稱中間語言。程序進行詞法
分析和語法分析以后,將程序轉(zhuǎn)換成中間代碼。這一轉(zhuǎn)換的作用是使程序的結(jié)構(gòu)更加簡單和
規(guī)范。中間代碼生成操作是一個中間過程,與用戶是無關(guān)的。
(4 )代碼優(yōu)化。代碼優(yōu)化是指對程序進行多種等價變換,使得從變換后的程序能生成更
有效的目標代碼。用戶可以在編譯程序時設(shè)置代碼優(yōu)化的參數(shù),可以針對不同的環(huán)境和設(shè)置
進行優(yōu)化。
(5 )目標代碼生成。目標代碼生成指的是產(chǎn)生可以執(zhí)行的應(yīng)用程序,這是編譯的最后一
個步驟。生成的程序是二進制的機器語言,用戶只能運行這個程序,而不能打開這個文件查
看程序的代碼。
1.1.2 編譯器
所謂編譯器,是將編寫出的程序代碼轉(zhuǎn)換成計算機可以運行的程序的軟件。在進行 C 程
序開發(fā)時,編寫出的代碼是源程序的代碼,是不能直接運行的。需要用編譯器編譯成可以運
行的二進制程序。
第5 章 編譯與調(diào)試
在不同的操作系統(tǒng)下面有不同的編譯器。C 程序是可以跨平臺運行的。但并不是說
Windows 系統(tǒng)下 C 語言編寫的程序可以直接在 Linux 下面運行。Windows 下面 C 語言編寫的
程序,被編譯成 exe 文件。這樣的程序只能在 Windows 系統(tǒng)下運行。如果需要在 Linux 系統(tǒng)
下運行,需要將這個程序的源代碼在 Linux 系統(tǒng)重新編譯。不同的操作系統(tǒng)下面有不同的編
譯器。Linux 系統(tǒng)下面編譯生成的程序是不能在 Windows 系統(tǒng)上運行的。
1.2 gcc 編譯器
gcc 是 Linux 下的 C 程序編譯器,具有非常強大的程序編譯功能。在 Linux 系統(tǒng)下,C 語
言編寫的程序代碼一般需要通過 gcc 來編譯成可執(zhí)行程序。
1.2.1 gcc 編譯器簡介
Linux 系統(tǒng)下的 gcc 編譯器(GNU C Compiler )是一個功能強大、性能優(yōu)越的編譯器。gcc
支持多種平臺的編譯,是 Linux 系統(tǒng)自由軟件的代表作品。gcc 本來只是 C 編譯器的,但是后
來發(fā)展為可在多種硬體平臺上編譯出可執(zhí)行程序的超級編譯器。各種硬件平臺對 gcc 的支持
使得其執(zhí)行效率與一般的編譯器相比平均效率要高 20%~30% 。gcc 編譯器能將 C、C++源程
序、匯程語言和目標程序進行編譯鏈接成可執(zhí)行文件。通過支持 make 工具,gcc 可以實施項
目管理和批量編譯。
經(jīng)過多年的發(fā)展,gcc 已經(jīng)發(fā)生了很大的變化。gcc 已經(jīng)不僅僅能支持C 語言,還支持 Ada
語言、C++語言、Java 語言、Objective C 語言、Pascal 語言、COBOL 語言等更多的語言集的編
譯。gcc 幾乎支持所有的硬件平臺,使得 gcc 對于特定的平臺可以編譯出更高效的機器碼。
gcc 在編譯一個程序時,一般需要完成預(yù)處理(preprocessing )、編譯(compilation )、匯
編(assembly )和鏈接(linking )過程。使用gcc
總結(jié)
以上是生活随笔為你收集整理的在Linux系统终端利用ggc,大学计算机:Linux下C编程.pdf的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: linux敏感目录文件,Windows系
 - 下一篇: linux中怎么添加附属组,Linux中