1. 程式人生 > >cygwin,在win中開發linux程式

cygwin,在win中開發linux程式

以下引用網上的一段話(出處:ASPx">http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx), 
用於說明cygwin的工作機制:cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們能夠生成並解釋win32的目標檔案。然後,他們要把這些工具移植到windows平臺上去。一種方案是基於win32 api對這些工具的原始碼進行大幅修改,這樣做顯然需要大量工作。因此,他們採取了一種不同的方法——他們寫了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的呼叫(如fork,spawn,signals,select,sockets等)封裝在裡面,也就是說,他們基於win32 api寫了一個unix系統庫的模擬層。這樣,只要把這些工具的原始碼和這個共享庫連線到一起,就可以使用unix主機上的交叉編譯器來生成可以在windows平臺上執行的工具集。以這些移植到windows平臺上的開發工具為基礎,cygnus又逐步把其他的工具(幾乎不需要對原始碼進行修改,只需要修改他們的配置指令碼)軟體移植到windows上來。這樣,在windows平臺上執行bash和開發工具、使用者工具,感覺好像在unix上工作。關於cygwin實現的更詳細描述,
請參考http://cygwin.com/cygwin-ug-net/highlights.html
二、cygwin的安裝。
 cygwin的安裝檔案很容易通過google找到。目前國內的網站上有“網路安裝版”和"本地安裝版"兩種。
標準的發行版應該是  網路安裝版。兩者並無大不同,下面介紹一下安裝的過程。

 step1. 下載後,點選安裝檔案(setup.exe)進行安裝,第一個畫面是GNU版權說明,點"下一步(N)—>",
進入安裝模式選擇畫面。

 step2. 安裝模式有"Install from Internet"、"Download form Internet"、
"Install from Local Directory" 三種。"Install form Internet"就是直接從internet上裝,
適用於網速較快的情況。如果你和我一樣網速不是很快,或者說裝過之後想把下載的安裝檔案儲存起來,
下次不再下載了直接安裝,就應該選擇"Download form Internet",下載安裝的檔案(大約40M左右)。
事實上,所謂的"本地安裝版",也是別人從網上下載全部檔案後打的包(適用於中國國情嘛^_^)
 
 step3. 接下來是選擇安裝目的路徑和安裝原始檔所在的路徑,之後就進入了選擇安裝包所在的路徑。
注意了阿,這裡可是重頭戲。我第一安裝的時候就是沒有看清這一步,結果沒有把gcc裝進去,導致沒法編
譯檔案。
  + All  Default
     + Admin Default
      ....
     + Devel   Default
     + Editors Default
     ....
如上圖所示,你在這個TreeView的某個節點上雙擊,就可以改變它的狀態,如Default、Install、
Uninstall、Reinstall四種狀態。預設的都是Default狀態,很多工具的預設狀態都是不安裝。
在這裡我選擇了在All上點Install,全部安裝,以免後患。(全部安裝大概不到200M的空間)

 step4. 點下一步,安裝成功。它會自動在你的桌面上建立一個快捷方式。

 好了,下面就開始我的linux旅程了。雙擊cygwin的快捷方式進入系統。
首先介紹幾個簡單的linux命令。
pwd   顯示當前的路徑
cd    改變當前路徑,無引數時進入對應使用者的home目錄
ls    列出當前目錄下的檔案。此命令有N多引數,比如ls -al
ps    列出當前系統程序
kill  殺死某個程序
mkdir 建立目錄
rmdir 刪除目錄
rm    刪除檔案
mv    檔案改名或目錄改名
man   聯機幫助
less  顯示檔案的最末幾行

由於linux下面的命令大多都有很多引數,可以組合使用。所以,每當你不會或者記不清楚改用那個引數,
那個開關的時候,可以用man來查詢,比如,我想查詢ls怎麼使用,可以鍵入
$  man ls
系統回顯資訊如下:
LS(1)                          FSF                          LS(1)
NAME
      ls - list directory contents
SYNOPSIS
      ls [OPTION]... [FILE]...
DESCRIPTION
      List information about the FILEs (the current directory by
      default).  Sort entries alphabetically if none of -cftuSUX
      nor --sort.
      -a, --all
            do not hide entries starting with .
      -A, --almost-all
            do not list implied . and ..
      -b, --escape
            print octal escapes for nongraphic characters
      --block-size=SIZE
            use SIZE-byte blocks
:
很全是吧,嘿嘿。
三、好了,多說無意,讓我們來寫一個hello world程式。
# cd 
 進入了/home/administrator目錄,我當前的登陸帳號是administrator

# mkdir source
 建立一個叫做source的子目錄

# cd source
 進入 /home/administrator/source

# vim hello.c

  啟動vim編輯器,來編寫程式。好了,現在有必要簡要介紹一下vim。
在linux界,有兩大編輯器最有歷史。其一是vi,其二是emacs。vi現在已經演化成了vim,比當前的vi
更為強大。vim和emacs是兩種截然不同的東西,vim強呼叫簡潔的命令來完成功能,無論是查詢、替換、
正則表示式匹配、編譯、連結、排錯、函式間跳轉等等等等都在命令列中完成,並且它把方向鍵也整合在
了hjkl四個鍵之上,可以說,用了vim基本上可以不用滑鼠了:p  emacs則是在功能強大上做文章,版本
控制、模擬多種編輯環境、對文字進行各種操作,可謂之一個強大的文字處理系統。emacs是用諸如
Ctrl+Alt+K 之類的組合鍵來控制的;vim則是用se(set 的縮寫)等簡潔命令來控制的。
  由於cygwin中只提供了vim(能不能自己裝emacs我還沒有試過),我們就先體驗一下vim吧:p
vim有兩種模式,命令模式和插入模式。在命令模式下,所有的輸入都算是命令,如果是胡亂敲打的鍵盤,就會聲音提示。