C Compiler 使用指引

上官林傑 (r93066 AT csie.ntu.edu.tw)

前言

  這份文件是為了台大資訊系93, 94 學年度「計算機程式設計」這門課程而設計 的編譯器使用指引。在文中提及「系上」之類的詞語皆是指台大資訊系,而工作站也是台大資訊系的資源。除此之外,其它的操作步驟還是可以 作為使用的參考。(如:使用 Microsoft® Visual C++® 軟體的部分)。


在工作站上使用gcc

  gcc 是 GNU project 中的 C 的編譯器(compiler)。在系上工作站(R217)上都有這個軟體,以下就為各位介紹如何在工作站上編輯程式碼以及使用 gcc 來編譯成可執行檔。

  1. 連接到工作站

      如果要遠端登入到系上工作站,就必須透過 SSH 協定來連線,你可以使用任何 SSH Client 軟體來連接到工作站上,這裡推荐一套不錯的 pputty(作者:piaip@csie.ntu.edu.tw)。而如何使用這套軟體及工作站位址,請參考 pputty 網頁及 217 助教發給各位的帳號資料。

  2. 編輯程式碼

      連上工作站後,就可以使用工作站下的文字編輯軟體來編寫程式碼了。這份文件將會教各位使用 joe 這個 文字編輯器來編輯程式碼(因為它很簡單:P)。要使用 joe ,直接在命令列下輸入 joe 就可以進入編輯畫面了(或是在 joe 後接一個檔名,屆時編輯完成後存檔便會直接存到該檔案中)。

    用joe開啟test.c檔案
    Fig.1 啟動 joe 編輯器編輯 test.c 檔案。

    如此一來,便會進入 joe 的編輯畫面:

    joe編輯畫面
    Fig.2 joe編輯畫面

      進入 joe 編輯畫面之後,你就可以開始撰寫程式碼了。如果你想要存檔或是其它操作,可以先按 Ctrl+k 再按 h 即會出現說明選單:

    joe說明選單
    Fig.3 joe說明選單

    由這個說明選單中,我們可以發現,如果我們要離開編輯環境及存檔的話,那麼我們必須先按 Ctrl+k 再按 x 來完成。如果只是要存檔而不離開的話,則是先按 Ctrl+k 再按 d 。(^代表Ctrl鍵)

  3. 編譯程式碼

      打完程式碼,也存好檔了之後,就可以開始進行編譯的動作。在命令列中輸入 gcc <程式碼檔名> 便會開始進行編譯的動作。

    使用gcc編譯程式
    Fig.4 使用gcc編譯程式

    如果你的程式碼中並沒有語法上錯誤的話, gcc 就會很「安靜」地編譯完再回到命令列(此時就已經產生了可執行檔)。如果你程式碼中有錯誤的話, gcc 則會產生錯誤訊息,提示你哪裡可能寫錯了:

    gcc的錯誤訊息
    Fig.5 gcc的錯誤訊息

    上圖這個例子,看得出來是將印出字串的函式 printf 拼錯成了 prinf 。gcc 在編譯這裡時發現錯誤,就會提示你 prinf 沒有被定義過,沒辦法繼續編譯完成,也就不會產生執行檔了。

  4. 執行程式

      假設你在編譯的過程都沒有發生錯誤的話,照上述的步驟執行,gcc 就會在同一個目錄下產生一個名為 a.out 的執行檔,我們可以在命令列下輸入 ./a.out 來執行它:(如果不喜歡產生的執行檔叫 a.out 的話,那在使用 gcc 的時候,加入一個 -o 的選項,後面再接希望輸出的名稱即可。如: gcc test.c -o test ,這樣產生的執行檔就會名為 test 而不是 a.out 了。)

    執行編譯好的程式
    Fig.6 執行編譯好的程式

  以上便是簡單地在工作站上寫程式的步驟,如果對文中的任何步驟有疑問或是想更進一步研究的話。可以寄 e-mail 與我討論,或是發揮好學的精神自動自發去找資料囉。

在 Windows 作業系統下使用 Microsoft® Visual C++® 6.0

  Microsoft® Visual C++® 6.0(以下用 VC6 稱之)是 Microsoft 所發售的軟體,它是一套整合式的開發環境,因為它整合了像是文字編輯器、編譯器(compiler)、除錯工具(debugger)及建置工具等等,以提供程式的開發者一個完整的環境,輕鬆地開發程式。它與 gcc 不同,除了 gcc 是一個純粹的編譯器之外, VC6 並不是免費軟體,不過系上219電腦教室的電腦上都有安裝這套軟體,如果自己電腦上沒有這套軟體而又懶得「取得一套來安裝」的話,可以到電腦教室使用。

  接下來便開始介紹 VC6 的使用步驟囉:

  1. 開啟一個 Project

      執行了 VC6 之後,我們從 File -> New... 來開啟建立 project 的對話框:

    開啟建立 project 對話框
    Fig.7 開啟建立 project 對話框

      打開對話框之後,就可以選擇我們要建立 project 的類型,如下圖所示:

    建立 project 對話框
    Fig.8 建立 project 對話框

      我們選擇 Projects -> Win32 Console Application 的專案類型,然後在右側填入 Project name ,然後在 Location 的地方就是指定相關檔案(project的檔案及程式碼檔案)存放的位置。這些設定好了之後按下 OK 就會進入到下一個對話選單。

    選擇建立 Win32 Console Application 類型
    Fig.9 選擇建立 Win32 Console Application 類型

    在這裡,我們選擇 An empty project. 之後再按下 Finish 。這樣它就會幫我們產生一個新的 project ,並且產生相關檔案及設定。

  2. 撰寫程式碼

      在建立好 project 之後,我們還必須建立一個程式碼的檔案,好讓我們開始撰寫程式碼。跟前面一樣,在 File -> New... 開啟對話選單。

    建立檔案
    Fig.10 建立檔案

    在這裡我們選擇建立 File -> C++ Source File 類型的檔案,並且在右側指定檔案名稱為 test.c (當然檔名可以自由選擇,不過副檔名 .c 表示是 C 程式碼,而 .cpp 則表示為 C++ 的程式碼)。按下 OK 後我們就可以開始寫程式了。

    撰寫程式碼
    Fig.11 撰寫程式碼
  3. 編譯程式及執行

      程式碼打好之後,就要把它編譯成執行檔,在 VC6 這種整合式開發環境中動作就簡單多了,如下圖所示點選 Build 的圖示。(Build 是編譯後再產生執行檔,而左邊的 Compile 圖示是只有編譯程式碼而不產生執行檔)

     Build 圖示
    Fig.12 Build 圖示

      而如果你的程式碼有語法上的錯誤時,在 build 的時候,下方的視窗就會出現錯誤訊息,如下圖所示:

    錯誤訊息
    Fig.13 錯誤訊息

      如果在 build 的過程中沒有任何錯誤的話(就是底下視窗顯示 0 errors),那就表示 build 成功,也就產生好了執行檔(預設是放在 {Project目錄}\Debug\***.exe),當然你也可以透過 VC6 裡的 Execute (一個驚嘆號的圖示)來執行程式。

    執行程式
    Fig.14 執行程式

    程式的執行結果就會如下圖所示:

    執行程式的結果
    Fig.15 執行程式的結果

    畫面很正確地輸出了一行 "Hello, world!" 的字樣,並且提示你按任一鍵就會跳出這個視窗。以上便是使用 VC6 來開發小程式的簡單步驟(因為 VC6 的功能繁鎖且強大,這裡就不再贅述,有興趣的同學可以自行找資料學習)。

在 Windows 作業系統下使用 Dev-C++

  Dev-C++是 Windows 作業系統下一個免費的 C/C++ 整合型開發環境,而且也有做了不錯的國際化,如果使用者願意也可以將功能表選單等等介面改成中文化的介面。而且它使用的 compiler 也是 gcc 這個 project (由 Mingw 移植的 Windows 版本),所以也值得為各位作個介紹:

  1. 取得 Dev-C++ 及安裝

      先到官方網站下載 Dev-C++。在這個範例會以最新版本的 Dev-C++ 來作示範(Dev-C++ 5.0 beta 9 (4.9.9.0) (7.6 MB) with Mingw/GCC 3.3.1)。下載完後直接執行它就可以進行安裝了。

  2. 設定 Dev-C++

    執行 Dev-C++ 後,如果你是第一次執行,則它會一步步詢問你要怎麼設定整個環境,如果你以後還想更改像介面這類的設定,可以到 Tools -> Environment Options 裡作更改:

    設定開發環境
    Fig.16 設定開發環境

    然後在 Interface 的分頁中選擇你想要更改的語言,以及更改你喜歡的選項:

    更改介面環境
    Fig.17 更改介面環境
  3. 建立專案及撰寫原始碼

      設定完環境之後,就如同其它整合開發環境一下,我們得先建立一個專案來讓我們開發程式。從 檔案 -> 開新檔案... -> 專案 來建立

    建立專案
    Fig.18 建立專案

    然後目前我們只需要建立 Console Application 的專案就可以寫作業了,不過要注意右下角的類型要改成 C 專案才不會讓 compiler 把你的程式碼當 C++ 在看唷!

    建立專案
    Fig.19 建立專案

      建立好專案之後,Dev-C++ 就會幫我們產生一個 main.c 的原始碼檔案,裡面會幫我們加入一些程式碼,你可以依自己的需要增減(好比說要把 system("pause") 拿掉避免嚇到批改魔,而 main 的兩個參數目前不會影響寫作業)

  4. 編譯及執行

    寫好程式碼之後,最重要的就是要編譯它並且執行看結果,這種事情在整合式開發環境中一切是那樣地容易,只要利用工具列的快速按紐就可以搞定了。

    編譯
    Fig.20 編譯

    在那一排圖示中有各式編譯或執行的選項,因為這部分與上述的 M$VC 的步驟類似,剩下的部分就交給各位自己去嘗試囉(反正介面都是中文的,不要再說看不懂了XD ),不過程式一執行完就會關掉視窗,所以如果想看結果,就自行加入 system("pause"); 之類的東西讓它暫停一下吧。

在 Windows 作業系統下使用 Mucrosoft® Visual Studio® .Net 2003

  Microsoft® Visual Studio® .Net 2003(以下用 .Net 2003 稱之)是 Microsoft 所發售的軟體,它是一套整合式的開發環境,因為它整合了像是文字編輯器、編譯器(compiler)、除錯工具(debugger)及建置工具等等,以提供程式的開發者一個完整的環境,輕鬆地開發程式。它與 gcc 不同,除了 gcc 是一個純粹的編譯器之外, .Net 2003 並不是免費軟體,你可以到學校計中網頁下載,或是到計中購買光碟。

這裡會一步步介紹如何使用 .Net 2003 來撰寫一個純文字模式的 C/C++ application:

  1. 開啟專案

    如同在 VC6 或是 DevC 下一樣,我們必須先開啟一個專案來管理即將要開發的 application,打開 .Net 2003 之後就在功能表列找 檔案 -> 新增 -> 專案 來開啟專案。

    open
    Fig. 21 在 .Net 2003 中開啟專案
  2. 選擇專案類型

    因為 .Net 2003 是一個大型的整合式開發環境,支援的專案類型繁多,如果我們只是要寫像計程作業這樣的程式,就要選擇 Visual C++ 專案 , 然後範本選擇 Win32 主控台專案 (英文版是 Win32 Console Application)。而你也要輸入專案名稱,然後選擇專案檔案(包括程式原始碼)在存放的地方。

    select
    Fig. 22 選擇專案類型

    選好類型後,會再跳出一個對話視窗來設定專案類型,在這裡我們選擇主控台應用程式,然後在下面的空專案打勾(不使用它預設的範本)

    setting
    Fig. 23 設定專案
  3. 加入原始碼

    設定完畢後,如果你沒有改過預設的配置,你可以在主視窗的右側找到管理專案的部分,在原始程式檔處按下右鍵選擇加入 -> 加入新項目(如果你已經有程式檔的話,可以加入現有項目)。

    source
    Fig. 24 加入原始檔

    接著,你必須選取你要加入項目的類型,在這裡我們選擇C++ 檔 (.cpp),然後要注意的是,檔案名稱的地方我們將它的副檔名取為 .c,用意在告訴編譯器用 C 的標準來編譯程式,而不是用 C++ 的標準

    type
    Fig. 25 選擇原始檔類型
  4. 撰寫程式碼及編譯

    如果一切無誤,那麼程式就會開啟一個文字編輯區域讓你撰寫程式碼,如下所示:

    coding
    Fig. 26 撰寫程式碼

    程式碼打完之後,存檔,然後就是作編譯的動作了。在功能表列找到建置 -> 建置方案,然後編譯器就會開始來作編譯的動作了。

    compile
    Fig. 27 編譯程式

    編譯時,下方會出現訊息區域,這裡會告訴你編譯的狀況,如果程式有寫錯,在編譯時也會在此顯示出錯誤訊息

    msg
    Fig. 28 訊息視窗
  5. 執行程式

    當編譯程式成功之後,可以選擇偵錯 -> 啟動但不偵錯來執行程式。(如果選擇啟動的話,會進入偵錯模式,如果你有使用 .Net 的 debugger 的話才需要使用偵錯模式)

    run
    Fig. 29 執行程式

    然後就會跳出一個 console 視窗來顯示程式執行的結果。

    console
    Fig. 30 程式執行結果

    你可以根據 console 視窗的標題來找到執行檔的位置(最後那一行"Press any key to continue" 是 .Net 2003 加入的部分,你不用擔心這行字會影響批改魔)。

Last Update: 2005/09/27

Valid XHTML 1.0!