基礎系統包括一個編譯器、一個shell及一組UNIX命令列工具,編譯器跟相關的工具是由MinGW(the Minimalist GNU for Windows)套件提供,MSYS套件是一個最小的系統,提供POSIX相容的Bourne shell以及一些必備的實用工具。
安裝MinGW跟MSYS
MinGW32是GCC編譯器移植到win32平台的套件,MSYS是提供所有其它必要工具的基礎系統,這兩個套件可以使用新的MingGW-Get installer來安裝。
下載MingGW-Get installer:
執行installer,在第三個安裝螢幕,選擇Use pre-packaged repository catalogues,ㄚ琪是選用Download latest repository catalogues,不過要小心,以免太新的編譯器,會對文中的設定有影響。
在第五個安裝螢幕裡,你可以改變安裝目錄,之後出現上圖,是因為ㄚ琪之前已經裝了5.1.6版了,所以它會詢問要不要安裝在這個目錄裡,預設的C:mingw通常是比較好的。
在第七個安裝螢幕裡,選擇下列的組成:
C Compiler
C++ Compiler
MSYS Basic System
MSYS Developer Toolkit
一旦安裝完成,啟動MinGW Shell,你可以在開始->程式集-> MSYS -> MinGW Shell找到,我們會使用這個installer的命令列介面來安裝其餘的套件。
我較喜歡rxvt作為命令列終端機,安裝rxvt套件可以用下面的命令:
mingw-get install msys-rxvt
接下來,我們要建一個新捷徑,:你也可以複製現有的MinGW Shell捷徑,或是建構一個新捷徑到C:MinGWmsys1.0msys.bat,在新捷徑上按滑鼠右鍵以開啟其屬性,像下面這樣編輯:
Target: C:MinGWmsys1.0msys.bat –rxvt
Start in: C:MinGWmsys1.0bin
你可以給這個新捷徑一個喜歡的名稱,我稱作MSYS Shell,關閉MinGW Shell視窗,在新捷徑上雙擊MSYS Shell。
你可以在RXVT終端機使用shift+insert組合鍵來貼上之前複製的文字,你可以從這篇指南複製命令然後貼到終端機視窗內,假如你使用滑鼠選取文字,它也會自動複製。
安裝其餘的套件
我們會透過命令列安裝器安裝一些其餘的msys套件:
mingw-get install msys-wget mingw-get install msys-zip mingw-get install msys-unzip
安裝後的設定
MSYS模擬UNIX的檔案系統結構,預設情況下MSYS安裝目錄會被mount為root目錄,他也可以在/usr,MinGW安裝目錄會被mount為/mingw。
傳統的視窗裝置像是D:跟E:可以用/d或/e來存取,使用mount命令來取得概述:
mount
我們會新增三個額外的目錄到/etc/fstab,一旦新的shell啟動就可以mount:/opt,我們安裝一些新的額外套件到這個地方、/build事我們下載原始碼並編譯套件的地方,以及/usr/local是我們安裝我們自己編譯的套件的地方,這些目錄可以在任何地方,但是要讓設定簡單並且一致,我們會新增C:MinGWopt、 C:MinGWbuild跟C:MinGWlocal並且mount為/opt、/build 及/usr/local。
新增必須的目錄:
mkdir /c/mingw/build /c/mingw/opt /c/mingw/local
Mount這些目錄,這會自動加到/etc/fstab中:
mount 'C:MinGWlocal' /usr/local mount 'C:MinGWopt' /opt mount 'C:MinGWbuild' /build
在/usr/local跟/opt新增必要的子目錄:
mkdir /opt/bin /usr/local/{bin,etc,include,lib,share} mkdir /usr/local/lib/pkgconfig
建構profile.local:
cat > /usr/local/etc/profile.local << "EOF" # # /usr/local/etc/profile.local # alias dir='ls -la --color=auto' alias ls='ls --color=auto' PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" CPPFLAGS="-I/usr/local/include" CFLAGS="-I/usr/local/include -mms-bitfields" CXXFLAGS="-I/usr/local/include -mms-bitfields" LDFLAGS="-L/usr/local/lib" export PKG_CONFIG_PATH CPPFLAGS CFLAGS CXXFLAGS LDFLAGS PATH="${PATH}:/opt/bin" PS1='[033[32m]u@h [033[33mw033[0m]$ ' export PATH PS1 EOF
確認在登錄時可以執行:
cat >> /etc/profile << "EOF" if [ -f /usr/local/etc/profile.local ]; then source /usr/local/etc/profile.local fi EOF
我們新增兩個額外的環境變數來指示套件建構目錄以及安裝的前置字串,這份指南的後面會依賴這些變數來指到正確的目錄:
cat >> /usr/local/etc/profile.local << "EOF" # package build directory LOCALBUILDDIR=/build # package installation prefix LOCALDESTDIR=/usr/local export LOCALBUILDDIR LOCALDESTDIR EOF
套用新的設定:
source /usr/local/etc/profile.local
設定vim
(假如你不想使用VIM編輯器可以跳過這節)
新增VIM的組態檔:
cat > ~/.vimrc << "EOF" " Configuration file for VIM set nocompatible set bs=2 " allow backspacing over everything in insert mode set ai " set autoindenting on " set backup " keep a backup file set nobackup " do not keep a backup file set history=256 " keep 256 lines of command line history set ruler " show the cursor position all the time set tabstop=8 " tab at 4 characters set shiftwidth=8 " 4 characters indentation set nowrap " do not wrap long lines set visualbell " no bell set background=light " msys rxvt has a light background "set background=dark " mingw shell uses a black background syntax on " syntax highlighting on EOF
設定vim為預設的編輯器
cat >> /usr/local/etc/profile.local << "EOF" EDITOR=vim export EDITOR EOF
在/opt安裝額外的套件
我們會安裝一些協力廠商的工具到/opt以避免干擾到預設的套件。
下載並安裝win32 subversion客戶端:
wget -c http://downloads.sourceforge.net/project/win32svn/1.6.13/svn-win32-1.6.13.zip unzip svn-win32-1.6.13.zip cp -va svn-win32-1.6.13/* /opt mkdir /opt/share/svn-win32-1.6.13 mv /opt/README.txt /opt/share/svn-win32-1.6.13 rm -rf svn-win32-1.6.13 svn-win32-1.6.13.zip
下載並安裝win32的cmake:
wget -c http://www.cmake.org/files/v2.8/cmake-2.8.3-win32-x86.zip unzip cmake-2.8.3-win32-x86.zip cp -va cmake-2.8.3-win32-x86/* /opt rm -rf cmake-2.8.3-win32-x86 cmake-2.8.3-win32-x86.zip
後記:MinGW/MSYS設定確實很簡單,比起水瓶尤加利的輕鬆學會 MSYS + MinGW —- 在 Windows 底下重新編譯 GNU 程式中所提的MinGW-5.1.x.exe設定方式更簡單, 但是ㄚ琪現在還卡在Part 3的GTK的編譯部份,很多都make錯誤,所以還得靜待一段期間好好瞭解一下,而本篇的設定,基於編譯的需求,有些已經有變更了,待ㄚ琪搞定第三部份後,再來更新第一部份吧!
1 則留言