使用 gcc 編譯程式

撰寫程式

在 C:\test 資料夾底下新增一個文字檔 hello.c,並且輸入以下程式碼:

#include <stdio.h>
int main() {
    printf("Hello, World");
    return 0;
}

如果要 MSYS2 的 Shell 內要切換到C槽,在MSYS2內的對應目錄為 /c

所以切換到 C:\test 底下則必須輸入:

cd /c/test

編譯程式

使用 gcc 來編譯剛才寫好的程式

gcc -o hello hello.c

執行程式

./hello

Hello World

如果看到這樣的結果就知道成功了!

P.S. 注意執行的時候要使用「./」代表的是自己目錄底下的執行檔,因為 C:\test 並沒有加入系統的 PATH 環境變數(也不建議加入)。

不同 Shell 環境下編譯

假設我們使用剛才提供的方式,並且開啟三個不同的 Shell 編譯同一個程式碼,但是指定不同的檔案名稱:

  • 在 MSYS2 Shell 中編譯:gcc -o hello hello.c
  • 在 MinGW-w64 Win32 Shell 中編譯:gcc -o hello32 hello.c
  • 在 MinGW-w64 Win64 Shell 中編譯:gcc -o hello64 hello.c

這樣會產生三個檔案 hello.exe hello32.exe hello64.exe,我們還可以使用 file 指令分辨產生出來的二進位檔(執行檔)是屬於哪個版本的 Shell 編譯出來的。

Hello World compiled with different shell

雖然這裡 hello 和 hello64 使用 file 命令看不出差異,但所編譯出來的檔案大小是差很多的(編譯成64位元的佔用容量較大)。

佈署

基本上32位元和64位元的執行檔都可以直接佈署到新電腦上執行(不過如果作業系統是32位元的,是沒辦法執行64位元的執行檔喔!)

還記得前面的章節有提到 MSYS2 Shell 會依賴 msys-2.0.dll 嗎?

如果不使用 MSYS2,而是使用 Windows 內建的「命令提示字元」來執行 MSYS2 編譯出來的程式是會無法執行的。

msys-2.0.dll error

不過一般來說並不會使用 MSYS2 Shell 來編譯程式並佈署在 Windows 上面使用,所以不用擔心這個問題。

您可以開始進行 C 語言程式開發了,而 C++ 的話是要使用g++的指令,後面的章節再來介紹如何使用。