講解Unix操作系統(tǒng)cc命令
我們知道Unix操作系統(tǒng)中,cc命令還提供了其他許多有用的命令行選項(xiàng)。借助于這些選項(xiàng)我們可以對編譯過程進(jìn)行進(jìn)一步的控制,如使cc只完成某些階段的編譯工作,指定對頭文件的搜索目錄,指定對代碼進(jìn)行優(yōu)化,指定在代碼中加入一些供調(diào)試程序所用的信息,等等。下面我們分別討論這些問題。
1.在Unix操作系統(tǒng)目標(biāo)文件中加入調(diào)試用的信息
除非是那種特別簡單的程序,一般大多數(shù)程序都會有這樣或那樣的問題。為了能夠使用Unix操作系統(tǒng)的符號調(diào)試程序(sdb,下一章回具體介紹)對程序進(jìn)行調(diào)試,必須在目標(biāo)代碼中加入一些有關(guān)的程序變量和語句信息,以便sdb能夠跟蹤函數(shù)調(diào)用、顯示變量的值以及設(shè)置斷點(diǎn),等等。
在cc命令行中加入-g選項(xiàng)將能夠?qū)崿F(xiàn)上述要求,如:
$ cc -g -o myprog myprog.c myfunc.c
這樣生成的myprog就可以用sdb進(jìn)行調(diào)試了。
2.Unix操作系統(tǒng)優(yōu)化處理
優(yōu)化的含義前面我們已經(jīng)講過,這里不想再重復(fù)。我們要說明的是在程序的調(diào)試過程中用不著進(jìn)行優(yōu)化處理。優(yōu)化只應(yīng)對最終提交的可執(zhí)行程序進(jìn)行。
在CC命令行中加上-O選項(xiàng)可以使編譯系統(tǒng)對代碼進(jìn)行優(yōu)化:
$ cc -O -o myprog myprog.c myfunc.c
優(yōu)化對于不同的程序效果可能是不同的。有些程序優(yōu)化不優(yōu)化都不會有什么區(qū)別。在有些Unix操作系統(tǒng)上(如Sun OS),對程序的優(yōu)化可以分成不同的級別(一般是1至4級)。
***級優(yōu)化是僅在匯編級上優(yōu)化,這是大多數(shù)Unix操作系統(tǒng)都會做得。第二級優(yōu)化是全局優(yōu)化,如循環(huán)優(yōu)化、公共子表達(dá)式的消除、復(fù)寫傳播及自動寄存器的分配。第三級上的優(yōu)化再加上對外部變量的用法和定義的優(yōu)化。第四級優(yōu)化則在第三級基礎(chǔ)上對指針賦值得效果進(jìn)行跟蹤。程序員可在-O后面加上一個數(shù)字(1,2,3,4)來表示所希望的優(yōu)化級別。
在Unix操作系統(tǒng)cc命令行中還可以使用其他的許多選項(xiàng),我們將介紹同鏈接有關(guān)的一些選項(xiàng),其他選項(xiàng)的使用請參閱聯(lián)機(jī)幫助?;蛘呤褂檬謨浴?/p>
【編輯推薦】