自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Unix操作系統(tǒng)命令行知識(shí)講解

系統(tǒng) 其他OS
我們今天在文章中會(huì)講解Unix操作系統(tǒng)。大多數(shù)Unix操作系統(tǒng)中C編譯命令的用法基本上都是類似的。我們這里介紹的將以SVR4上的C編譯系統(tǒng)為基礎(chǔ)。

我們知道在Unix操作系統(tǒng)中,實(shí)現(xiàn)C源程序到可執(zhí)行文件的這一轉(zhuǎn)換過程的工具是cc。在大多數(shù)系統(tǒng)中cc實(shí)際上是一個(gè)shell命令文件。有些Unix操作系統(tǒng)中的C編譯程序可能并不叫cc而是其它的一個(gè)什么名稱,如Sun工作站上常用的gcc等等。但這些都無關(guān)緊要。

大多數(shù)Unix操作系統(tǒng)中C編譯命令的用法基本上都是類似的。我們這里介紹的將以SVR4上的C編譯系統(tǒng)為基礎(chǔ)。

在某個(gè)程序的源代碼被存放到多個(gè)不同文件中的情況下,我們只需要在命令行中一一指定這多個(gè)C文件即可。例如,我們可以將上述myprog.c拆分為兩個(gè)C文件和一個(gè)頭文件
(.h)如下:
 

  1. myprog.h  
  2. # include <stdio.h>;  
  3. # inclued <ctype.h>;  
  4. # define TESTOK 1  
  5. myprog.c  
  6. #include "myprog.h"  
  7. void main (int argc,char * argv[])  
  8. {int i;  
  9. for (i=1;i<argc;i + +)  
  10. if (TestInput(argv)= = TESTOL)  
  11. printf("The %dth value '%s' \tis ok! \n",argv[1]);  
  12. else  
  13. printf("The %dth value ' %s' \tis BAD! \n",iargv);  
  14. }  
  15. myfunc.c  
  16. #include "myprog.h"  
  17. int TestInput(char * ValueInput)  
  18. {while (* ValueInput)  
  19. if (!isdigit(*ValueInput) return (! TESTOK);  
  20. else ValueInput + +  
  21. return ((100/atoi(ValueInput))? TESTOK:! TESTOK); 

這時(shí)要再編譯此程序時(shí)可輸入如下命令:$ cc -o myprog myprog.c myfunc.c

在這個(gè)命令行中如果不指定myfunc.c,此時(shí)由于在myprog.c中所調(diào)用的TestInput()這個(gè)函數(shù)不是任何標(biāo)準(zhǔn)的庫函數(shù),在鏈接時(shí)鏈接程序?qū)⒄也坏酱朔?hào)的定義,故鏈接過程將以失敗而告終,此時(shí)cc將給出如下的錯(cuò)誤信息:
 

  1. Undefine first referenced  
  2. symbol in file  
  3. TestInput  myprog.o  
  4. id: myprog:fatal error: Symbol referencing errors.No output written to myprog $ 

而可執(zhí)行文件myprog也無法生成。但編譯卻會(huì)生成myprog.c的目標(biāo)代碼(在某個(gè)文件固有語法錯(cuò)誤而無法正確被編譯的情況下(此時(shí)為編譯過程出錯(cuò)),cc將生成其他無語法錯(cuò)誤的源文件的目標(biāo)文件,但不進(jìn)行鏈接)。如下:

 

  1. $ ls -ltotal 8  
  2. rw-r--r-- 1 yxz user 454 Sep 1 09:27 myfunc.c  
  3. rw-r--r-- 1 yxz user 479 Sep 1 09:28 myprog.c  
  4. rw-r--r-- 1 yxz user 298 Sep 1 09:27 myprog.h  
  5. rw-r--r-- 1 yxz user 924 Sep 1 09:28 myfunc.o 

此時(shí)我們可以使用如下命令行得到可執(zhí)行文件:$ cc -o myprog myprog.o myfunc.c
這里我們看到,cc命令行中的文件參數(shù)可以不全是.c文件,目標(biāo)文件(.o)文件以后編譯過程中所得到的其他文件,如預(yù)編譯后文件(.i文件),編譯后的匯編程序(.s文件)等都可作為文件參數(shù)。在了解了Unix操作系統(tǒng) C編譯系統(tǒng)的工作過程之后,理解這一點(diǎn)是不困難的。因?yàn)榫幾g系統(tǒng)只需要對各種不同類型的文件進(jìn)行有關(guān)的處理就可以了。

關(guān)于cc命令最基本的用法我們就介紹這么多,其它更高級(jí)的用法可參考以后關(guān)于Unix操作系統(tǒng)知識(shí)的討論。

【編輯推薦】

  1. 關(guān)于Unix操作系統(tǒng)用戶命令
  2. 講解Unix操作系統(tǒng)遠(yuǎn)程知識(shí)
  3. 解析幾個(gè)Unix操作系統(tǒng)網(wǎng)絡(luò)命令
  4. Unix操作系統(tǒng)即時(shí)通信
  5. Unix操作系統(tǒng)路漫漫
責(zé)任編輯:小霞
相關(guān)推薦

2010-04-09 16:36:54

Unix操作系統(tǒng)

2010-04-13 19:07:18

Unix操作系統(tǒng)

2010-04-09 16:26:20

Unix操作系統(tǒng)

2010-04-20 11:34:26

Unix操作系統(tǒng)

2010-04-29 13:30:20

Unix操作系統(tǒng)

2010-05-04 17:17:46

Unix類

2010-04-20 10:12:40

Unix操作系統(tǒng)

2010-04-19 17:47:59

Unix操作系統(tǒng)

2010-04-19 17:34:02

Unix操作系統(tǒng)

2010-04-20 12:02:22

Unix操作系統(tǒng)

2010-04-15 18:06:08

Unix操作系統(tǒng)

2010-05-07 13:04:11

Unix Shell

2010-05-07 17:31:42

Unix類操作系統(tǒng)

2010-04-19 12:40:00

Unix操作系統(tǒng)

2010-05-07 17:41:36

BSD Unix

2010-04-29 14:08:38

Unix操作系統(tǒng)

2010-04-20 17:34:25

Unix操作系統(tǒng)

2010-05-11 11:34:44

2010-04-19 17:25:31

Unix操作系統(tǒng)

2010-04-19 16:57:09

Unix操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)