Unix操作系統中,cc命令還提供了其他許多有用的命令行選項。借助於這些選項我們可以對編譯過程進行進一步的控制,如使cc只完成某些階段的編譯工作,指定對頭文件的搜索目錄,指定對代碼進行優化,指定在代碼中加入一些供調試程序所用的信息,等等。下面我們分別討論這些問題。
1.Unix操作系統僅生成目標文件
如果只想生成源文件的目標代碼而不對這些代碼進行鏈接,可以在cc命令行中加上-C選項。此時編譯系將只生成與各源文件相對應的.o文件(目標文件)。
如:
$ cc -c myprog.c myfunc.s
將生成同myprog.c和myfunc.s相對應的目標文件myprog.o和myfunc.o。
2.Unix操作系統頭文件搜索路徑
當用戶在C源程序中用# include指令包含了某個頭文件時,根據文件名指定方法的不同,C編譯系統將在不同的目錄下去尋找指定的頭文件:
在用尖括號(<>;)指定頭文件名時,預處理程序將在Unix操作系統中存放頭文件的標准位置(通常是/usr/include目錄)尋找指定的頭文件。
在用雙引號(“”)指定投文件名時,預處理程序將先在Unix操作系統包含此頭文件的C源程序所在的目錄中(一般為當前目錄),去查找該頭文件。找不到時再到標准目錄下去查找。在對於那些頭文件既不在標准位置,又不在與C源程序同一目錄時的情況怎麼辦呢?
為此,CC命令提供了-I(Include)選項,以供用戶自己指定頭文件所在地目錄。例如,對於myfunc.c和myprog.c中所包含的頭文件myprog.h,我們假定其後來被放在目錄$HOME/include目錄下,而這兩個C文件則被放在$HOME/cfile目錄下。此時在$HOME/cfile目錄下對這兩個C文件進行編譯時,可使用如下命令:
$ cc -I #HOME/include myprog.c myfunc.c
此時對於這兩個C文件中的#include "myprog.h",預處理程序將先在$HOME/cfile目錄下,然後再$HOME/include目錄下,最後再Unix操作系統標准位置查找myprog.h。-I選項也能改變那些用尖括號(<>指定的頭文件的搜索順序,此時預編譯程序將首先在-I指定的目錄下,然後才在標准位置搜索。
-I選項可以多次重復使用。這樣我們將能夠指定多個非標准的頭文件目錄。由於用匯編語言進行編程是一件效率比較低的工作,用此種方法可以預期將獲得比較高的效率。
關於Unix操作系統的知識,這次,我們就講解到這裡了。希望大家能夠好好的學習Unix操作系統的知識。