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

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