發信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信區: test
標  題: 星星流講座 0001
發信站: ☆清華電機☆ (Mon May  1 09:35:50 1995)
轉信站: star

星星流講座 0001         C 語言教室

※ 本文授權 MOS 影業公司使用

第 1 講 之 1         Say Hello
                Topic: 如何編譯及執行程式

請你先用編輯器 (editor) 編輯 hello.c 這個檔,它的內容如下:

/* hello.c */

#include <stdio.h>

main ()
{
    printf ("Hello, world!\n");
}

接下來我們準備執行這個程式,請在 UNIX 提示號下鍵入以下高亮度字元

[thccy14]/Oz/u/u80/ee/u801833/program> gcc -o hello hello.c
[thccy14]/Oz/u/u80/ee/u801833/program> ./hello
Hello, world!

當你輸入了 gcc -o hello hello.c 卻出現了這個訊息時

gcc: Command not found

那麼表示你的工作站上沒有 gcc 這個編譯器 (compiler),這時候請你把 gcc 換成
cc,也就是說,請你輸入

cc -o hello hello.c

代替我們例子中 gcc 那一行。請各位特別注意小寫英文字母 o 和數字 0 的差別。

gcc -o hello hello.c 這一行究竟代表什麼意思呢?其實 gcc 是一個 C 語言的編
譯器 (compiler),編譯器的工作就是負責把程式重編之後翻譯成可執行檔用的。一
個程式必須經過下面的流程才可以變成可執行檔:

                        原始碼 (source code)
                            ↓
                        編譯器編譯 (compiled by compiler)
                            ↓
                        目的碼 (object code)
                            ↓
                        連結器連結程式庫 (link library by linker)
                            ↓
                        可執行檔 (executable file)

而本行的參數和它們的意思如下:

                        gcc -o hello hello1.c
                            ^  ^     ^
                            |  |     這個是你所要編譯的程式名稱
                            |  這個是你編譯出來後可執行檔的名字
                            這個是指定可執行檔名字的參數

如果你不加 -o hello,也就是直接打 gcc hello1.c 的話,那編出來的可
執行檔自動被命名為 a.out。gcc 其他的參數我們以後用到再講。

你或許會覺得奇怪,程式不是要經過編譯器和連結器才可以變成可執行檔嗎?可是 gcc
只是一個編譯器而已,它怎麼可以造出可執行檔呢?這是因為 gcc 編譯完程式之後,會
偷偷地呼叫 ld 這個連結器,造出可執行檔來。