為何要編譯

  1. Linux 系統上真正認識的可執行檔其實是二進位檔案 (binary file),例如 /usr/bin/passwd, /bin/touch, /bin/bash。以 file 命令查看檔案 /bin/bash 型態,顯示執行檔類別 (ELF 64-bit LSB executable),同時說明是使用動態函式庫 (uses shared libs)。(ELF: Extensible Linking Format, LSB: Linux Standard Base)
    [dywang@dywIssd zzz]$ file /bin/bash 
    /bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), 
    dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
    
  2. Shell scripts 只是利用 shell (例如 bash) 程式的功能進行一些判斷式,及呼叫一些已經編譯好的 binary 檔案來執行。以 file 命令查看檔案 /etc/init.d/autofs 型態,顯示 shell script 腳本檔類別。
    [dywang@dywIssd zzz]$ file /etc/init.d/autofs 
    /etc/init.d/autofs: Bourne-Again shell script text executable
    
  3. 編譯器:將純文字 (text file) 之原始碼檔案『編譯』成作業系統看得懂的 binary file。例如:以編譯器 gcc 將使用 C 語法進行的原始程式碼,編譯成可執行的 binary file。
  4. 寫一個 C/C++ 程式, 要有 C/C++ 的編譯器(例如:gcc/g++),將原始碼 (source code) 翻譯成機器可以執行的程式碼。