您的位置: 旅游網(wǎng) > 明星 >> 宋茜

    操作系統(tǒng)中的應(yīng)用介紹上計(jì)劃

    發(fā)布時(shí)間:2021-10-27 05:28:54

    在為L(zhǎng)inux開(kāi)發(fā)應(yīng)用程序時(shí),絕大多數(shù)情況下使用的都是C語(yǔ)言,因此幾乎每一位Linux程序員面臨的首要問(wèn)題都是如何靈活運(yùn)用C編譯器。目前Linux 下最常用的C語(yǔ)言編譯器是GCC(GNU Compiler Collection),它是GNU項(xiàng)目中符合ANSI C標(biāo)準(zhǔn)的編譯系統(tǒng),能夠編譯用C、C++和Object C等語(yǔ)言編寫的程序。GCC不僅功能非常強(qiáng)大,結(jié)構(gòu)也異常靈活。最值得稱道的一點(diǎn)就是它可以通過(guò)不同的前端模塊來(lái)支持各種語(yǔ)言,如Java、 Fortran、Pascal、Modula-3和Ada等。 開(kāi)放、自由和靈活是Linux的魅力所在,而這一點(diǎn)在GCC上的體現(xiàn)就是程序員通過(guò)它能夠更好地控制整個(gè)編譯過(guò)程。在使用GCC編譯程序時(shí),編譯過(guò)程可以被細(xì)分為四個(gè)階段: ◆ 預(yù)處理(Pre-Processing) ◆ 編譯(Compiling) ◆ 匯編(Assembling) ◆ 鏈接(Linking) Linux程序員可以根據(jù)自己的需要讓 GCC在編譯的任何階段結(jié)束,以便檢查或使用編譯器在該階段的輸出信息,或者對(duì)最后生成的二進(jìn)制文件進(jìn)行控制,以便通過(guò)加入不同數(shù)量和種類的調(diào)試代碼來(lái)為今后的調(diào)試做好準(zhǔn)備。和其它常用的編譯器一樣,GCC也提供了靈活而強(qiáng)大的代碼優(yōu)化功能,利用它可以生成執(zhí)行效率更高的代碼。 GCC提供了30多條警告信息和三個(gè)警告級(jí)別,使用它們有助于增強(qiáng)程序的穩(wěn)定性和可移植性。此外,GCC還對(duì)標(biāo)準(zhǔn)的C和C++語(yǔ)言進(jìn)行了大量的擴(kuò)展,提高程序的執(zhí)行效率,有助于編譯器進(jìn)行代碼優(yōu)化,能夠減輕編程的工作量。 GCC起步 在學(xué)習(xí)使用GCC之前,下面的這個(gè)例子能夠幫助用戶迅速理解GCC的工作原理,并將其立即運(yùn)用到實(shí)際的項(xiàng)目開(kāi)發(fā)中去。首先用熟悉的器輸入清單1所示的代碼: 清單1:hello.c #include int main(void){printf (\"Hello world, Linux programming!\\\\n\");return 0;}

    然后執(zhí)行下面的命令編譯和運(yùn)行這段程序: # gcc hello.c -o hello# ./helloHello world, Linux programming!

    從程序員的角度看,只需簡(jiǎn)單地執(zhí)行一條GCC命令就可以了,但從編譯器的角度來(lái)看,卻需要完成一系列非常繁雜的工作。首先,GCC需要調(diào)用預(yù)處理程序 cpp,由它負(fù)責(zé)展開(kāi)在源文件中定義的宏,并向其中插入“#include”語(yǔ)句所包含的內(nèi)容;接著,GCC會(huì)調(diào)用ccl和as將處理后的源代碼編譯成目標(biāo)代碼;最后,GCC會(huì)調(diào)用鏈接程序ld,把生成的目標(biāo)代碼鏈接成一個(gè)可執(zhí)行程序。 為了更好地理解GCC的工作過(guò)程,可以把上述編譯過(guò)程分成幾個(gè)步驟單獨(dú)進(jìn)行,并觀察每步的運(yùn)行結(jié)果。第一步是進(jìn)行預(yù)編譯,使用-E參數(shù)可以讓GCC在預(yù)處理結(jié)束后停止編譯過(guò)程: # gcc -E hello.c -o hello.i

    喜歡從自己的角度出發(fā) 此時(shí)若查看p文件中的內(nèi)容,會(huì)發(fā)現(xiàn)stdio.h的內(nèi)容確實(shí)都插到文件里去了,而其它應(yīng)當(dāng)被預(yù)處理的宏定義也都做了相應(yīng)的處理。下一步是將hello.i編譯為目標(biāo)代碼,這可以通過(guò)使用-c參數(shù)來(lái)完成: # gcc -c hello.i -o hello.o

    GCC默認(rèn)將.i文件看成是預(yù)處理后的C語(yǔ)言源代碼,因此上述命令將自動(dòng)跳過(guò)預(yù)處理步驟而開(kāi)始執(zhí)行編譯過(guò)程,也可以使用-x參數(shù)讓GCC從指定的步驟開(kāi)始編譯。最后一步是將生成的目標(biāo)文件鏈接成可執(zhí)行文件: # gcc hello.o -o hello

    商丘白癜風(fēng)哪里治療好
    重慶治療早泄多少錢
    孩子不吃飯?jiān)趺崔k
    猜你會(huì)喜歡的
    猜你會(huì)喜歡的
    主站蜘蛛池模板: 国产真实乱对白精彩久久| 真实国产乱子伦沙发睡午觉| 日本三人交xxx69| 亚洲综合色丁香麻豆| 亚洲制服丝袜中文字幕| 日本三浦理惠子中文字幕| 亚洲欧美在线观看一区二区| 美女张开双腿让男生捅| 天天干天天干天天操| 亚洲中文字幕无码专区| 色综合91久久精品中文字幕| 天天操天天摸天天射| 亚洲中文字幕无码久久综合网| 粗大的内捧猛烈进出视频| 国产壮汉男同志69可播放| √天堂资源在线| 欧美人善交videosg| 国产xxxx色视频在线观看| 伊人一伊人色综合网| 日本www.色| 亚洲乱码无码永久不卡在线| 美女视频免费看一区二区| 国产麻豆videoxxxx实拍| 久久精品国产亚洲香蕉| 精品一区二区久久久久久久网精| 国产另类ts人妖一区二区| a级毛片高清免费视频在线播放| 日本一区二区三区四区五区| 亚洲一区二区三区在线观看网站| 特黄大片aaaaa毛片| 国产成人av一区二区三区不卡 | 国产精选之刘婷野战| 久久亚洲精品无码VA大香大香| 秋霞免费一级毛片| 国产精品αv在线观看| bt在线www天堂资源网| 打臀缝打肿扒开夹姜| 亚洲日韩欧洲无码av夜夜摸| 色视频色露露永久免费观看| 在线观看一二三区| 一级毛片视频在线观看|