歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix教程 >> Unix操作系統知識講解

Unix操作系統知識講解

日期:2017/2/27 17:37:54   编辑:Unix教程

我們在Unix操作系統中,實現C源程序到可執行文件的這一轉換過程的工具是cc。在大多數系統中cc實際上是一個shell命令文件。cc命令還提供了其他許多有用的命令行選項。

借助於這些選項我們可以對編譯過程進行進一步的控制,如使cc只完成某些階段的編譯工作,指定對頭文件的搜索目錄,指定對代碼進行優化,指定在代碼中加入一些供調試程序所用的信息,等等。下面我們分別討論這些問題。

1.Unix操作系統僅進行編譯預處理

在命令行中加上-P選項可以使cc僅完成對.c文件的預處理工作,而後面的編譯,匯編,優化,鏈接則都不作,例如:$ cc -P myprog.c

此時編譯Unix操作系統將在當前目錄下生成一個名為myprog.i的文件。這個文件中包含有對myprog.c中的偽指令進行處理後的代碼及myprog.c中原有的代碼。

在某些情況下,.i文件可能對於程序排錯有一定的用處。對於下面的代碼段,編譯程序可能會報告j無定義的錯誤:

  1. for (i=0;i<10;i++)
  2. { /*declare avariable j:
  3. int j;/*This is a temporary variable */
  4. j=i*i;
  5. .
  6. .
  7. .
  8. }

預編譯處理後,缺省情況下,預處理程序將把源程序中的注釋刪除,這樣改段代碼將變成:

  1. for (i=0;i<10;i++)
  2. {
  3. j=i*i;
  4. .
  5. .
  6. .
  7. }


這樣一來我們將能夠比較快地發現程序中的錯誤。利用.i文件,我們還能夠對條件編譯和宏擴展後的結果進行檢查。

在cc命令行中加上-C選項可以在預編譯後的文件中保留源文件中的注釋。

2.Unix操作系統僅生成匯編語言代碼

在cc命令行中加上-S 選項,可以使cc只調用預處理程序和編譯程序以生成與源程序相應的匯編代碼。與每一個C源文件相應的匯編程序被放到相應的.s文件中。例如:

  1. ___FCKpd___2nbsp;cc -S myprog.c myfunc.c
  2. ___FCKpd___2nbsp;ls *.s
  3. myfunc.s myprog.s
  4. ___FCKpd___2nbsp;

這種匯編語言代碼是同機器具體相關的。有些情況下我們可能需要用匯編語言進行編程,這時可以先用C語言編寫此程序,再編譯得到匯編程序,然後手工對此匯編程序修修改改,估計基本上就能滿足要求。由於用匯編語言進行編程是一件效率比較低的工作,用此種方法可以預期將獲得比較高的效率。

我們關於Unix操作系統的知識就講到這裡了。

Copyright © Linux教程網 All Rights Reserved