我們知道Unix操作系統中,cc命令還提供了其他許多有用的命令行選項。借助於這些選項我們可以對編譯過程進行進一步的控制,如使cc只完成某些階段的編譯工作,指定對頭文件的搜索目錄,指定對代碼進行優化,指定在代碼中加入一些供調試程序所用的信息,等等。下面我們分別討論這些問題。
1.在Unix操作系統目標文件中加入調試用的信息
除非是那種特別簡單的程序,一般大多數程序都會有這樣或那樣的問題。為了能夠使用Unix操作系統的符號調試程序(sdb,下一章回具體介紹)對程序進行調試,必須在目標代碼中加入一些有關的程序變量和語句信息,以便sdb能夠跟蹤函數調用、顯示變量的值以及設置斷點,等等。
在cc命令行中加入-g選項將能夠實現上述要求,如:
$ cc -g -o myprog myprog.c myfunc.c
這樣生成的myprog就可以用sdb進行調試了。
2.Unix操作系統優化處理
優化的含義前面我們已經講過,這裡不想再重復。我們要說明的是在程序的調試過程中用不著進行優化處理。優化只應對最終提交的可執行程序進行。
在CC命令行中加上-O選項可以使編譯系統對代碼進行優化:
$ cc -O -o myprog myprog.c myfunc.c
優化對於不同的程序效果可能是不同的。有些程序優化不優化都不會有什麼區別。在有些Unix操作系統上(如Sun OS),對程序的優化可以分成不同的級別(一般是1至4級)。
第一級優化是僅在匯編級上優化,這是大多數Unix操作系統都會做得。第二級優化是全局優化,如循環優化、公共子表達式的消除、復寫傳播及自動寄存器的分配。第三級上的優化再加上對外部變量的用法和定義的優化。第四級優化則在第三級基礎上對指針賦值得效果進行跟蹤。程序員可在-O後面加上一個數字(1,2,3,4)來表示所希望的優化級別。
在Unix操作系統cc命令行中還可以使用其他的許多選項,我們將介紹同鏈接有關的一些選項,其他選項的使用請參閱聯機幫助。或者使用手冊。