Shell 選擇及安裝 GCC

Shell 選擇

當 MSYS2 安裝成功後,會有三種版本的 Shell 供您使用。

MSYS2 Shells

  • 如果需要編譯32位元的版本的執行檔,就使用 MinGW-w64 Win32 Shell
  • 如果需要編譯64位元的版本的執行檔,就使用 MinGW-w64 Win64 Shell

至於 MSYS2 Shell 和其他兩者又有何差別?

在 MSYS2 Shell 使用 gcc 編譯出來的執行檔會需要依賴 msys-2.0.dll,但是 MSYS2 Shell 有非常良好的 POSIX 支援。

一般來說 MSYS2 Shell 通常用於編譯 GNU 相關的 Linux 作業系統工具,或者需要編譯 POSIX 支援的軟體,才使用 MSYS2 這個 Shell。

其他差異

預設的情況下,MSYS2 系統安裝好時,所有工具的執行檔會放在:

  • C:\msys64\usr\bin

如果有透過套件管理程式 pacman 安裝32位元或者64位元的特定版本的工具,則 MSYS2 會將其複製到對應的資料夾:

  • C:\msys64\mingw32\bin
  • C:\msys64\mingw64\bin

其他詳細的差異,可以直接比較各 Shell 環境底下的 /etc/profile 和 MSYSTEM 變數有關的判斷。

安裝 GCC(Gnu Compiler Collection)

讓我們先使用套件管理程式的搜尋看看有哪些和GCC相關的套件可以安裝

$ pacman -Ss gcc
mingw32/mingw-w64-i686-gcc 5.3.0-1 (mingw-w64-i686-toolchain)
    GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
mingw32/mingw-w64-i686-gcc-ada 5.3.0-1 (mingw-w64-i686-toolchain)
    GNU Compiler Collection (Ada) for MinGW-w64
mingw32/mingw-w64-i686-gcc-fortran 5.3.0-1 (mingw-w64-i686-toolchain)
    GNU Compiler Collection (Fortran) for MinGW-w64
mingw32/mingw-w64-i686-gcc-libgfortran 5.3.0-1 (mingw-w64-i686-toolchain)
    GNU Compiler Collection (libgfortran) for MinGW-w64
mingw32/mingw-w64-i686-gcc-libs 5.3.0-1 (mingw-w64-i686-toolchain)
    GNU Compiler Collection (libraries) for MinGW-w64
mingw32/mingw-w64-i686-gcc-objc 5.3.0-1 (mingw-w64-i686-toolchain)
    GNU Compiler Collection (ObjC,Obj-C++) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc 5.3.0-1 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-ada 5.3.0-1 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (Ada) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-fortran 5.3.0-1 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (Fortran) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-libgfortran 5.3.0-1 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (libgfortran) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-libs 5.3.0-1 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (libraries) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-objc 5.3.0-1 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (ObjC,Obj-C++) for MinGW-w64
msys/gcc 4.9.2-6 (msys2-devel)
    The GNU Compiler Collection - C and C++ frontends
msys/gcc-fortran 4.9.2-6 (msys2-devel)
    Fortran front-end for GCC
msys/gcc-libs 4.9.2-6 (base) [已安裝]
    Runtime libraries shipped by GCC
msys/mingw-w64-cross-gcc 4.9.2-3 (mingw-w64-cross-toolchain mingw-w64-cross)
    Cross GCC for the MinGW-w64

套件前面顯示的就是提供給特定的 Shell 環境使用的版本,以下是我們需要的三個套件:

  • mingw-w64-i686-gcc -> MinGW-w64 Win32 Shell
  • mingw-w64-x86_64-gcc -> MinGW-w64 Win64 Shell
  • gcc -> MSYS2 Shell

透過套件管理程式安裝 GCC

pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-x86_64-gcc
pacman -S gcc

接下來可以分別在這三個 Shell 底下使用 gcc -v 來檢查是否安裝成功

GCC in Different Shells

看到類似這樣的輸出畫面,就可以確定已經安裝成功,下一章節將教導如何實際操作 GCC 編譯簡單的程式。