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

















