close

安裝編譯器

如同之前所說,我們要寫程式碼,並且把程式碼變成一個可以在電腦上執行的程式,就會需要一個編譯器。 這個世界上存在很多不同的C編譯器,但在這裡我推薦使用GCC,並且整個教學也將使用GCC編譯器做為主要使用的編譯器。 當然,你也可以使用你愛用的編譯器來學習C語言,如果你是個不需要我告訴你編譯器怎麼使用的進階新手的話。

如果你使用的作業系統是Linux的話,通常絕大部分的發行版已經將GCC預裝在電腦上了,你並不需要多做什麼; 不過若你使用的是Windows的話,請到這個網站下載並安裝TDM-GCC: http://tdm-gcc.tdragon.net

如果你的作業系統是Apple系列的話,你會需要安裝Xcode,並且使用他的Clang/LLVM編譯器。 至於怎麼做?我也很想告訴你,可老實說我從來沒用過Apple!

如果你根本不曉得自己電腦用的是什麼作業系統、甚至不知道什麼是作業系統、或者是沒有我教你你不知道如何下載安裝一套軟體的話, 請先回去惡補一下電腦基礎操作與知識再回來學程式語言吧!

啟動指令列模式

我想我先前已經花不少篇幅解釋過為什麼我們要在指令列模式下學習程式設計了。 但請不要害怕,我們其實並沒有要完全的在指令列模式下進行所有的操作, 事實上大部分的時間裡你都還是會在最熟悉的環境裡進行大部分的工作。

Linux的使用者,在大部分的發行版上應該都可以按下Ctrl+Alt+T的組合鍵叫出指令視窗。

OS X的使用者,請在設定工具裡面找尋並開啟「終端機」程式。

Windows的使用者,請點選「開始」、「程式集」、「MS-DOS模式」來開啟指令視窗。 如果找不到MS-DOS模式的字樣的話,可以找找看有沒有「命令提示字元」。

指令列模式基本操作

各個系統對於指令列模式的長相都不太一樣,以下將以Linux的畫面做為範例解釋。 為了讓初學者更能夠掌握狀況,我會在左邊放指令模式下的操作圖片,右邊放上在圖形檔案瀏覽器下觀看同一個目錄的圖片。

在啟動終端機後,輸入ls可以看到資料匣裡面的檔案和子資料匣清單(Windows請輸入dir); 至於會顯示哪一個資料匣呢?那就要看終端機的工作目錄現在是在哪個資料匣裡面了, 像現在的範例就是位在「~」這個目錄下。

再來介紹cd這個指令,他可以移動目前的工作目錄到其他地方去(Windows使用的指令一樣是cd)。 比方說我們現在在~這個目錄下,~底下有一個資料匣workspace(如果沒有的話請自己建立一個), 我想要移動目前的工作環境到這個地方的話就輸入cd workspace:

現在終端機上的工作目錄從~變成~/workspace了,我們再用ls看看這個目錄下有什麼東西:

比對我們所熟悉的圖形檔案瀏覽器,應該可以確認我們真的進到了workspace這個資料匣下。

再來進行一個練習,請再次移動工作目錄到workspace下面的work1(若沒有的話請一樣自己建一個)。 我們輸入cd work1:

就這樣我們可以用cd這個指令不斷的進入下層目錄。 但不知道大家有沒有一個疑問,如果我想要回到上層目錄的話應該怎麼做呢? 這裡為大家介紹兩個很特殊的資料匣,那就是「.」和「..」, 每一個資料匣底下都有這兩個資料匣,這是自動產生的。 兩個點「..」代表著現在的這個目錄的上一層,所以只要輸入cd ..就可以回到上一層目錄:

看,我們從work1回到workspace了呢! 現在我們已經學會使用cd指令來自由的移動我們的工作目錄了。

至於另一個特殊目錄「.」表示的是與現在相同的目錄,也就是說如果輸入cd .的話就會移動到現在的工作目錄,也就是等於完全沒有移動的意思。 我們實際試試看,請輸入cd .:

看,我們的工作目錄還是同一個,一點都沒有更改。 這樣看起來,「.」這個目錄似乎沒什麼用處的樣子! 其實不是的,這個目錄最大的用途就是在一些可能容易產生混淆、或其他問題的地方明確的指出「就是在現在這個目錄下」, 我們也會在往後遇到這樣的用法。

這裡再補充一個蠻實用的技巧,大部分的終端機系統在輸入指令的時候按下方向鍵的「上」,就會出現上一次輸入的指令,不用再重打一次; 再按一次「上」則會出現更上一次輸入的指令。 至於終端機可以記憶多少個曾經輸入的指令?這就要看每一個終端機系統的設定了。

有關終端機的指令就先到此為止, 基本上我們不太需要學習有關如何建立或刪除資料匣、建立或刪除檔案、修改檔案等等其他指令, 因為這些動作都可以使用各位所熟悉的其他工具程式來完成。 就這樣,cd和ls就是全部我們所需要使用的指令,再加上方向鍵來快速切換曾經輸入過的指令,夠簡單吧!

檔案與路徑

一般我們想要比較精確的描述一個檔案、或一個資料匣叫什麼名字、甚至於被放在什麼地方的時候,我們會像下面這樣描述:

~/workspace/work1/main.c

上面的敘述告訴我們有一個檔案叫作main.c,也就是~目錄下的worksapce目錄下的work1目錄下的main.c。 我們用一個斜線「/」來標示目錄與目錄間的區隔(Windows下則是使用反斜線「\」), 所以一個檔案、或資料匣在命名的時候就不能夠使用這個斜線做為其名稱的組成。 事實上,還有一些被系統用來做其他特殊功能的字元也不能成為檔案或資料匣名稱的一部份; 另外,因為指令模式在處理空白的時候問題比較多也比較麻煩, 因此建議各位初學者在往後寫的程式碼檔案、甚至於檔案所在的路徑都不要有空白出現。

最後整理一下,在之後我們練習寫程式時、以及編譯程式的過程中可能都會產生出若干檔案, 為怕造成各位在檔案管理上的紊亂,一般我們習慣在練習前先建立一個空的資料匣,然後把所有的程式碼檔案等等丟到裡面去再執行工作。 而我們所建立的檔案、包含檔案所在之路徑之命名請勿含有斜線、反斜線、一些系統所不允許使用的符號、以及空白。

副檔名

說完了檔案與路徑的一些基本知識,接下來更進一步來談談另一個有關檔案名稱的知識,就是副檔名。 前面說過,一個檔案的命名除了一些不可被使用的符號外,基本上幾乎是可以隨意的取名字,這點我想常常在用電腦的大家都明白。 然而在檔案名稱中還有一個特殊符號有一個特殊用途,那就是點「.」。 由於電腦上的檔案眾多,人們以往會在檔名的後面加上一些註記來為檔案進行分類, 比方說file.txt讓然一看就知道這個檔案是個文字檔,而file.png表示這個檔案是個PNG圖檔,file.html則告訴我們這個檔案是個網頁檔。 事實上檔案名稱並非只容許一個點號出現,所以若一個檔案被命名為file.ext1.ext2.ext3是可被允許的,甚至一個檔案沒有半個點號也都沒問題, 副檔名其實主要是給人做檔案類型的辨識使用,至於系統或其他軟體則不一定會理會副檔名。

當有多個點號存在時,一般我們只會將最後一個點號之後的部份看做檔案類型標記, 例如當一個檔案被命名為file.txt.bmp.html時,則這個檔案的副檔名就是html。 另外一個常被初學者誤解的地方是,一個檔案的檔名就是包含副檔名在內的整個名稱,而不是去除副檔名後剩下的名稱。 比方說file.txt這個檔案的副檔名是txt,而檔名就是file.txt,不是file。

編譯器測試

最後,我們來進行簡單的測試來測驗我們前面所安裝的編譯器能不能工作。 請在終端機上輸入指令:

gcc --version

如果前面對於編譯器的安裝順利完成的話,這個指令應該會印出有關GCC編譯器的版本資訊:

若在指令輸入後不能正常顯示出版本訊息,則表示編譯器的安裝工作還沒有成功完成,請先確認你在安裝過程中沒有遇到任何問題。 順便提醒一下,Windows的使用者安裝玩軟體後會需要將終端機關閉再重新開啟,甚至是將整臺電腦重新啟動。 如果你是Windows 95/98使用者的話,在重新啟動前請先確定您有先修改C:\autoexec.bat這個檔案,並且將編譯器的執行檔所在路徑加入於其中。

如果你可以正確的輸入指令,並且成功的在終端機印出GCC的版本資訊的話,那恭喜你,你的編譯器已經可以運作了! 接下來,我們就可以開始真正的練習寫作我們的第一個程式。

重點回顧

  • 使用cd指令可以把工作目錄往下移動到指定的資料匣;使用cd ..可以把工作目錄向上移回一層資料匣。
  • 使用ls (或dir)可以顯示當前工作目錄下所擁有的檔案與資料匣。
  • 檔案與資料匣的命名不可含有路徑分隔符號「/」或「\」、及系統所不允許的特殊符號、以及建議也不要有空白或中文等。
  • 檔案名稱中最後一個點號「.」之後的部份我們稱之為「副檔名」;而所謂的檔名,通常包含著副檔名的部份。
  • 當GCC安裝成功且已可正常運作時,使用gcc --version可以印出有關GCC的版本資訊。

練習與討論

  1. 請開啟終端機程式,練習向上向下移動工作目錄、檢查工作目錄的內容。 然後建立一個用來放我們練習用檔案的目錄(建議每一次的練習都建一個新的目錄)。
  2. 若你的電腦裡沒有GCC的話,請安裝它, 然後使用gcc --version指令來檢查GCC是否已安裝成功(Windows安裝完後可能需要重新開機)。
arrow
arrow
    文章標籤
    C語言教學
    全站熱搜

    夜行者 發表在 痞客邦 留言(0) 人氣()