編譯器

什麼是編譯器?

編譯系統設計一書裡頭曾對編譯器(compiler)有這樣的說明:

程式語言對人及電腦來說,是描述計算過程的記號。如我們所知,這個世界依賴程式語言, 因為在所有電腦上執行的所有軟體都是用某種程式語言編寫的。但是,在程式可以執行之前,它首先需要翻譯成能夠被電腦執行的形式。

完成這項翻譯工作的軟體系統稱為編譯器(compiler)。

簡單地說,編譯器就是程式,它可以讀取某一種語言(原始語言, source language)編寫的程式,然後將程式翻譯成等同於另一種語言(目的語言)編寫的程式。

如果你的程式是像下面的C++程式:

int a, b, sum;
     
cin >> a;
cin >> b;
             
sum = a + b;
cout << sum << endl;

不管你看不看得懂這樣的程式,我只要跟你說電腦還是無法解讀的,他們需要用編譯器解譯成

00000 10011110
00001 11110100
00010 10011110
00011 11010100
00100 10111111
00101 00000000

這樣子的機器碼,編譯器實在是很偉大,也是你在寫程式之前必須配備好的。
所以在你開始設計C或C++程式之前,可以線上購買編譯器或是網路下載免費的軟體來編譯C或C++程式,如果你是使用Mac OS X、Linux、或是其他*nix變種的系統(像是Unix 或是FreeBSD),可能就有安裝好的編譯器像是gccg++可以使用。

編譯器術語

  • 編譯 簡單地說,就是將原始碼檔案轉成執行檔,但嚴格地說,編譯是一種解譯的過程。
  • 連結 將編譯過的程式碼轉成執行檔
  • 建置 建置是指建立最後執行檔的過程(通常被簡稱為編譯),有工具可以幫忙減少建置過程的複雜度–像是makefiles
  • 編譯器 一般來說,編譯器指的是編譯器跟「連結器」
  • 連結器 藉著連結產生可執行的程式
  • 整合開發環境(IDE,Integrated Development Environment),結合文字編輯器跟編譯器的軟體,這樣你可以在IDE內直接編譯跟執行你的程式,IDE通常有能力幫你快速跳到編譯錯誤的地方。

了解編譯的過程

命令列程式

命令列程式是使用者跟環境之間使用文字來溝通的程式,像是列印文字到螢幕上或是從鍵盤讀取輸入。

命令列程式很容易互動,在所有平台上幾乎都有可預期的行為,他們也容易用來實作,因此在學習程式語言的基礎時很有幫助:在下面的例子中有所有的命令列程式。

編譯命令列程式取決於你所使用的特定工具的方法。

對初學者來說要編譯C++程式就簡單的方法就是使用整合開發環境(IDE),IDE通常整合了幾個開發工具,包括文字編輯器跟直接編譯程式的工具。

這裡有一些如何使用不同IDE編譯跟執行命令列程式的操作:

IDE 平台 命令列程式
Code::blocks Windows/Linux/MacOS 使用Code::blocks編譯命令列程式
Visual Studio Express Windows 使用VS Express 2013編譯命令列程式
Dev-C++ Windows 使用Dev-C++ 5.11編譯命令列程式

如果你是使用有開發功能的Linux或是Mac環境,你應該能夠直接從終端機編譯任何的範例,只要在命令中加入C++11的旗標給編譯器:

編譯器 平台 命令
GCC Linux以及其他的… g++ -std=c++0x 範例.cpp -o 範例程式
Clang OS X以及其他的… clang++ -std=c++11 -stdlib=libc++ 範例.cpp -o 範例程式
Borland Windows 可參考此文件編譯

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *