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

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