操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    在很多人的眼里,C語言和linux常常是分不開的。這其中的原因很多,其中最重要的一部分我認(rèn)為是linux本身就是C語言的杰出作品。當(dāng)然,linux操作系統(tǒng)本身對(duì)C語言的支持也是相當(dāng)?shù)轿坏摹N恼聛碓矗篊++技術(shù)網(wǎng) 原創(chuàng)文章版權(quán)所有,未經(jīng)授權(quán),禁止轉(zhuǎn)載。

    基于Linux系統(tǒng)C編程 (基礎(chǔ)篇)

    第一章編譯與調(diào)試

    1.1編譯的概念和理解

    在進(jìn)行C程序開發(fā)時(shí),編譯就是將編寫的C語言代碼變成可執(zhí)行程序的過程,這一過程是由編譯器來完成的。編譯器就是完成程序編譯工作的軟件,在進(jìn)行程序編譯時(shí)完成了一系列復(fù)雜的過程。

    1.1.1程序編譯的過程

    在執(zhí)行這一操作時(shí),程序完成了復(fù)雜的過程。一個(gè)程序的編譯,需要完成詞法分析、語法分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成。本章將講解這些步驟的作用與原理。

    (1)詞法分析。指的是對(duì)由字符組成的單詞進(jìn)行處理,從左至右逐個(gè)字符地對(duì)源程序進(jìn)行掃描,產(chǎn)生一個(gè)個(gè)的單詞符號(hào)。然后把字符串的源程序改造成為單詞符號(hào)串的中間程序。在編譯程序時(shí),這一過程是自動(dòng)完成的。編譯程序會(huì)對(duì)代碼的每一個(gè)單詞進(jìn)行檢查。如果單詞發(fā)生錯(cuò)誤c 程序文件的擴(kuò)展名,編譯過程就會(huì)停止并顯示錯(cuò)誤。這時(shí)需要對(duì)程序中的錯(cuò)誤進(jìn)行修改。

    (2)語法分析。語法分析器以單詞符號(hào)作為輸入,分析單詞符號(hào)串是否形成符合語法規(guī)則的語句。例如,需要檢查表達(dá)式、賦值、循環(huán)等結(jié)構(gòu)是否完整和符合使用規(guī)則。在語法分析時(shí),會(huì)分析出程序中錯(cuò)誤的語句,并顯示出結(jié)果。如果語法發(fā)生錯(cuò)誤,編譯任務(wù)是不能完成的。

    (3)中間代碼生成。中間代碼是源程序的一種內(nèi)部表示,或稱中間語言。程序進(jìn)行詞法分析和語法分析以后,將程序轉(zhuǎn)換成中間代碼。這一轉(zhuǎn)換的作用是使程序的結(jié)構(gòu)更加簡(jiǎn)單和規(guī)范。中間代碼生成操作是一個(gè)中間過程,與用戶是無關(guān)的。

    (4)代碼優(yōu)化。代碼優(yōu)化是指對(duì)程序進(jìn)行多種等價(jià)變換,使得從變換后的程序能生成更有效的目標(biāo)代碼。用戶可以在編譯程序時(shí)設(shè)置代碼優(yōu)化的參數(shù),可以針對(duì)不同的環(huán)境和設(shè)置進(jìn)行優(yōu)化。

    (5)目標(biāo)代碼生成。目標(biāo)代碼生成指的是產(chǎn)生可以執(zhí)行的應(yīng)用程序,這是編譯的最后一個(gè)步驟。生成的程序是二進(jìn)制的機(jī)器語言,用戶只能運(yùn)行這個(gè)程序,而不能打開這個(gè)文件查看程序的代碼。

    1.1.2編譯器

    所謂編譯器,是將編寫出的程序代碼轉(zhuǎn)換成計(jì)算機(jī)可以運(yùn)行的程序的軟件。在進(jìn)行C程序開發(fā)時(shí),編寫出的代碼是源程序的代碼,是不能直接運(yùn)行的。需要用編譯器編譯成可以運(yùn)行的二進(jìn)制程序。在不同的操作系統(tǒng)下面有不同的編譯器。C程序是可以跨平臺(tái)運(yùn)行的。但并不是說系統(tǒng)下C語言編寫的程序可以直接在Linux下面運(yùn)行。下面C語言編寫的程序,被編譯成exe文件。這樣的程序只能在系統(tǒng)下運(yùn)行。如果需要在Linux系統(tǒng)下運(yùn)行,需要將這個(gè)程序的源代碼在Linux系統(tǒng)重新編譯。不同的操作系統(tǒng)下面有不同的編譯器。Linux系統(tǒng)下面編譯生成的程序是不能在系統(tǒng)上運(yùn)行的。

    1.2gcc編譯器

    gcc是Linux下的C程序編譯器c 程序文件的擴(kuò)展名為,具有非常強(qiáng)大的程序編譯功能。在Linux系統(tǒng)下,C語言編寫的程序代碼一般需要通過gcc來編譯成可執(zhí)行程序。

    1.2.1gcc編譯器簡(jiǎn)介

    Linux系統(tǒng)下的gcc編譯器()是一個(gè)功能強(qiáng)大、性能優(yōu)越的編譯器。gcc支持多種平臺(tái)的編譯,是Linux系統(tǒng)自由軟件的代表作品。gcc本來只是C編譯器的,但是后來發(fā)展為可在多種硬體平臺(tái)上編譯出可執(zhí)行程序的超級(jí)編譯器。各種硬件平臺(tái)對(duì)gcc的支持使得其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。gcc編譯器能將C、C++源程序、匯程語言和目標(biāo)程序進(jìn)行編譯鏈接成可執(zhí)行文件。通過支持make工具,gcc可以實(shí)施項(xiàng)目管理和批量編譯。

    經(jīng)過多年的發(fā)展,gcc已經(jīng)發(fā)生了很大的變化。gcc已經(jīng)不僅僅能支持C語言,還支持Ada語言、C++語言、Java語言、語言、語言、COBOL語言等更多的語言集的編譯。gcc幾乎支持所有的硬件平臺(tái),使得gcc對(duì)于特定的平臺(tái)可以編譯出更高效的機(jī)器碼。

    gcc在編譯一個(gè)程序時(shí),一般需要完成預(yù)處理()、編譯()、匯編()和鏈接()過程。使用gcc編譯C程序時(shí),這些過程是使用默認(rèn)的設(shè)置自動(dòng)完成的,但是用戶可以對(duì)這些過程進(jìn)行設(shè)置,控制這些操作的詳細(xì)過程。

    1.2.2gcc對(duì)源程序擴(kuò)展名的支持

    擴(kuò)展名指的是文件名中最后一個(gè)點(diǎn)的這個(gè)點(diǎn)以后的部分。例如下面是一個(gè)C程序源文件的擴(kuò)展名。

    舉例:形如5.1.c

    那么這個(gè)文件的文件名是“5.1.c”,擴(kuò)展名是“.c”。通常來說,源文件的擴(kuò)展名標(biāo)識(shí)源文件所使用的編程語言。例如C程序源文件的擴(kuò)展名一般是“.c”。對(duì)編譯器來說,擴(kuò)展名控制著缺省語言的設(shè)定。在默認(rèn)情況下,gcc通過文件擴(kuò)展名來區(qū)分源文件的語言類型。然后根據(jù)這種語言類型進(jìn)行不同的編譯。gcc對(duì)源文件的擴(kuò)展名約定如下所示。

    .c為擴(kuò)展名的文件,為C語言源代碼文件。.a為擴(kuò)展名的文件,是由目標(biāo)文件構(gòu)成的庫文件。.C,.cc或.cpp為擴(kuò)展名的文件,標(biāo)識(shí)為C++源代碼文件。.h為擴(kuò)展名的文件,說明文件是程序所包含的頭文件。

    .i為擴(kuò)展名的文件,標(biāo)識(shí)文件是已經(jīng)預(yù)處理過的C源代碼文件,一般為中間代碼文件。

    Linux系統(tǒng)下C程序開發(fā)詳解:

    1.ii為擴(kuò)展名的文件,是已經(jīng)預(yù)處理過的C++源代碼文件,同上也是中間代碼文件。

    2.o為擴(kuò)展名的文件,是編譯后的目標(biāo)文件,源文件生成的中間目標(biāo)文件。

    3.s為擴(kuò)展名的文件,是匯編語言源代碼文件。

    4.S為擴(kuò)展名的文件,是經(jīng)過預(yù)編譯的匯編語言源代碼文件。

    5.o為擴(kuò)展名的文件,是編譯以后的程序目標(biāo)文件(),目標(biāo)文件經(jīng)過連接成可執(zhí)行文件

    此外,對(duì)于gcc編譯器提供兩種顯示的編譯命令,分別對(duì)應(yīng)于編譯C和C++源程序的編譯命令。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有