上一次我學習了在VC6.0下成功的運行了第一個C程式,實在是感覺到興奮.但是關於編譯,連結等步驟,VC6.0已經傻瓜化的幫我做了,我感覺到確實很方便,但是這樣才給我帶來了1個問題,就是其中的步驟只是看了書有所瞭解,自己呢,沒有實踐過,所以感覺還不是自己的東西。所以我決定自己用記事本寫個程式,但是自己動手實現編譯,連結等VC幫我做了的事情。
首先,我用記事本寫上那個helloworld程式。
#include<stdio.h>
int main(void)
{
printf("Hello,World!\r\n");
return (0);
}
然後把此檔案尾碼命名為.c的hello.c檔案。
然後在CMD中,用CL hello.c 這時,CL編譯器就會產生2個檔案。1個是hello.exe檔案,1個是hello.obj檔案。.exe檔案我知道是WINDOWS平台的可執行檔,可是這個.obj是個什麼檔案啊,我不懂,我查閱下了資料。原來.obj檔案是通用的COFF的格式,是個目標檔案,可以和其他平台互動.但是怎麼一下子出現了2個檔案啊!原來直接用CL命令,編譯器給自動連結了。這裡要加1個參數/c。這樣編譯器就不會自動連結了。嗯!加了參數/c後果然只有1個.obj檔案了!!!現在沒有了.exe要怎麼才能產生.exe檔案呢,這裡就要用到另外1個命令工具了,link.這個工具就是連結器!然後我這樣做:link hello.obj。這樣做了link就為win平台造了個pe格式的hello.exe.嘿嘿!這下子就可以在WIN平台運行hello程式了!!!
上一節中有個網友提醒我,#include<stdio.h>是將stdio.h這個檔案在此處原樣展開。於是我深入學習了下證明了他的說法,是這樣的,非常感謝他!但是如何才能自己看到這一過程呢。就是在cl命令後面加上2個參數/c和/p。我試試!這樣呢,就會多了1個.i檔案。然後我開啟它,盡然有400多行,我仔細對照了stdio.h中的內容,是一樣的,但是其中有個細節,就是stdio.h檔案中也包含了其他檔案,所以全部展開後就400多行了!
嗯!現在差不多明白了第一個程式是如何做的了!