以上步驟基本上沒有啥技術含量(一點都沒有噢,只為記錄一下,圖片也漂亮點),注意到最后這個黑色的命令行,在安裝結束之后會出現這么個命令行,其中會問你是否已經安裝過MinGW了?在回答y之后,要求輸入MinGW的地址,注意,在資源管理器里面我們都是用“\”來代表路徑層級的分層的,在這里是用“/”(方向不一樣)。另外地址中不允許帶有空格。這一點在《如何安裝MinGW》一文中已經有提到。
MSYS(Minimal GNU(POSIX)system on Windows)
由于本文的主角是它,我們先來看看它是什么?從名字的全稱我們可以看出它是一個小型的GNU環境。MSYS在windows下模擬了一個類unix的終端,它只提供了MinGW的用戶載入環境,Cygwin在windows下模擬了一個linux環境,它們帶有一些unix終端下常用的工具,如ls、tail、tar,其實它們都是相應unix/linux工具的windows版,而且它們的環境會繼承windows的一些系統變量,如path,如果windows下裝有ruby、rails,在它們的環境里同樣都可以直接運行。
Cygwin(基于GPL licensed協議)
Cygwin并不是GNU,它只是實現了許多Windows API中沒有的Unix風格的調用(如fork,spawn,signals,select,sockets等),并將它們封裝在Cygwin.dll中,讓Windows系統能夠模擬出Unix的調用,進而直接使用Unix上的交叉編譯器來生成可以在windows平臺上運行的工具集。以這些移植到windows平臺上的開發工具為基礎,cygnus又逐步把其他的工具(幾乎不需要對源代碼進行修改,只需要修改他們的配置腳本)軟件移植到windows上來。這樣,在windows平臺上運行bash和開發工具、用戶工具,感覺好像在unix上工作。
MinGW(Minimalist GNU For Windows)
主要由GNU binary utilities、GCC和GDB組成。同時還包括一些必要的庫,例如libc(C Runtime),及專門用于Win32環境的API接口庫。如果你想學習linux環境下的編程,而又不想裝linux,那你就裝一個MinGW吧。
它與Cygwin實現了相同的夢想,也是為了實現在Windows上能夠運行Unix上的工具。但與之不同的是它采用的是Windows C類庫(mscvrt)而不是Cygwin采用的GNU C運行時類庫。同時也因為兩個運行時類庫的端口不同而導致兩者有諸多區別。但是卻因為采用了直接支持Windows環境的Windows C運行時類庫,它也給CDT(C/C++ Development Toolkit)提供了最好的支持。同時,它避免了像Cygwin使用了GPL協議。
C/C++ Development Toolkit(CDT)
C/C++ Development Toolkit(CDT)是基于Eclipse特征的,為使用C/C++編程語言,提供創建、編輯、導航、生成(build)和調試項目的一個集合。
它不包含必要的轉換C/C++代碼的編譯器和調試器來執行和調試程序,但是它提供了一個允許這些工具集成在一個相容方式下協作的框架。它允許你根據你的項目需求來混合和匹配這些工具。
通常,商業發行的CDT包括了必要的工具集。如果你沒有,那么最基本的CDT提供了綜合的GNU工具來生成和調試。他們通常指Cygwin和MinGW等。
做了三個簡單的概念介紹后,我們知道了它們各自的一些特征。它們都不是像Visual Studio這樣可以拿來直接就用的軟件,它們的使用需要一些必要的配置。這也是社區文化的一種體現。
以上的安裝步驟最后一步出現的命令行模式,確實是大部分安裝程序中不常出現的,那么它究竟為我們做了什么呢?帶著這樣的疑問,我們滾動到這副截圖來看看它的內容。從內容中我們可以看到在安裝完畢之后我們會被要求輸入MinGW的所在目錄,根據文檔中的說明,我們可以將MinGW放在除了MSYS目錄的任何的一個目錄中(也就是如圖D:\GNU\MSYS位置不能放),至于放了之后會怎樣,筆者也不知曉,望知曉者可以告知在下,定當感激不盡。
之后它會根據我們給出的路徑在MSYS目錄下的etc文件夾(如本例中的D:\GNU\MSYS\1.0\etc)內找到fstab文件并進行編輯(會在稍后描述)。然后檢查我們給出的路徑下的一些文件。從圖中我們可以看到我們缺少了一個非常重要的make.exe文件,這個文件其實存在,只是文件名不同,我們可以將其重命名為make.exe。(本例中,我們將已經安裝的D:\GNU\MinGW\bin\mingw32-make.exe修改為D:\GNU\MinGW\bin\make.exe即可)
fstab文件
與fstab相同路徑下的有個fstab.sample文件,這是一個示例文件。您可以仿造它進行一些設置。(如果您按照之前我們的安裝步驟,并且中途沒有出現偏差的話,那么通常您已經正確設置了fstab文件,如果因為其它原因您需要修改該文件,也可以參考該部分內容。)fstab文件將是dll初始化期間唯一被載入的文件。它的格式我們可以看到,是由一個物理路徑+“空格/TAB制表格”+Mount_Point來維持的。它實現了一個路徑映射的體系結構,以至于我們不必手動地搬動那些文件到正確的目錄,也能夠讓我們正確地訪問我們所需的文件。
下圖為fstab.sample文件
下面我們打開fstab看看系統之前為我們設置了什么:
從本例子中我們發現了系統為我們做好了這樣一個映射。將D:/gnu/mingw映射到了/mingw。
MSYS只是一個模擬的平臺,我們除了讓它跟MinGW實現互聯互通,我們也能夠讓它跟系統上的其他程序互聯互通。
通過運行D:\GNU\MSYS\1.0\msys.bat批處理文件,我們可以打開如上圖所示的命令行窗口(它的功能基本上類似于運行了D:\GNU\MSYS\1.0\bin\sh --login -i語句)

執行的內容相當于運行了下面的批處理語句。
下面讓我們打開一個word程序。我們在命令行下輸入:
$ start '/d/Program\ Files/Microsoft\ Office/Office12/WINWORD' $@
語句(具體路徑視您本機的word安裝程序路徑所定)
我本機的路徑為
D:\Program Files\Microsoft Office\Office12\WINWORD.EXE
我們很容易看出它們二者之間的區別。下面我就針對這些區別做一些簡要的解釋。
首先我們看“D”是一個盤符,在這個映射里面,我們規定,盤符若為“D:\”我們就將其轉化為“/d”,同時為了與Unix的使用習慣一致,在資源管理器中表示層次的“\”符號都變成了“/”,若遇到空格,我們則以“\ ”(\+空格)來表示。因此我們有了如上一個等價的路徑轉換。
復制粘帖
說到使用這樣的命令行方式大家一定覺得還不是那么方便。因為這里不能夠復制粘貼。但你錯了,這里復制粘貼也很容易。
復制:選擇你要復制的部分,然后鼠標點一下,就可以了。容易吧?
粘帖:只需用shift+鼠標左鍵,就可以直接將剪貼板內的文字粘帖進來了。
(更多辦法請參考doc/msys/readme.rtf)