歡迎您光臨本站 註冊首頁

cygwin,在win中開發Linux程序

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

  很多用windows的朋友不習慣於用linux的開發環境。雖然很樂意嘗試一下,但是往往怕 linux系統打亂了自己的正常生活:1〉裝linux系統把windows系統給搞壞了,導致自己無法正常生活;2>linux開發上手太難,寫出第一個helloworld不亞於java的難度,環境配置摸不著頭腦。對於此,我的看法是:路不管平還是陡,終歸你要走的,如果你願意投入到linux開發的社群中來,不會安裝linux系統,不會配置工作環境是不能想象的。(事實上,確實要了解很多東西的原理,不然很難排錯:諸如,硬碟引導器的引導原理、分區結構原理及linux分區結構和文件系統、環境變數的設置、種類繁多的壓縮包安裝包的解壓安裝方法、用戶管理許可權管理等常用命令、以至於驅動安裝系統中文化等等異常瑣碎的東東)。

  本文試圖跳過這個難走的步驟,啟用一個win環境下的linux模擬器(和linux下面的命令行開發環境基本一致),用短短的20分鐘的時間,教你做出一個純正的linux下gcc編譯的helloworld。就象是買點心前先嘗嘗味道,不也是一件很愉快的事情么?(註:cygwin事實上不僅有此模擬功能,它也是移植unix<-->win程序的一個很有效的工具,也有人用它來做嵌入式系統開發)

  一、cygwin是什麼?

  這個問題你最好google一下"cygwin的歷史",或許能夠獲得更為詳盡的答案。簡而言之,cygwin是一個在windows平台上運行的 linux模擬環境,是cygnus solutions公司開發的自由軟體(該公司開發了很多好東西,著名的還有eCos,不過現已被Redhat收購)。插一句廢話,很多朋友不明白 linux和unix的區別和聯繫,在此也簡要介紹一下。UNIX是一個註冊商標,是要滿足一大堆條件並且支付可觀費用才能夠被授權使用的一個操作系統; linux是unix的克隆版本,是由其創始人Linus和諸多世界知名的黑客手工打造的一個操作系統。為什麼linux和unix之間有很多軟體可以很輕鬆的移植?因為linux也滿足POSIX規範,所以在運行機制上跟unix相近。

  用於說明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這一行上後面的Default上點Install,全部安裝,以免後患。(注意:這裡的樹形控制項和win下面的不同,你試試點在All上點 和 在All這一行後面的Default上點,會有不同的響應)

  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

:

  很全是吧,嘿嘿。

[火星人 ] cygwin,在win中開發Linux程序已經有448次圍觀

http://coctec.com/docs/linux/show-post-188794.html