標籤:
使用cygwin移植Linux的項目到Windows下之總結(轉)原文 http://my.oschina.net/michaelyuanyuan/blog/68615?p=1 一、why 接到一個任務,把公司的某個在Linux下開發的項目(也就是一個程式啦)移植到Windows下,使得其可以在Windows下運行,並且啟動並執行結果當然要是正確的啦,何謂正確,當然就是和Linux運行結果比對,一樣就行。二、難在何處 難就難在如何在Windows下編譯通過。假設你在Linux下開發了一個這樣的程式: #include<stdio.h> int main() { printf("Hello World\n"); return 0; } 那我表示移植Windows下毫無壓力,因為此程式中並沒有使用Linux專屬的API。但是當你的程式中使用了Linux專屬的API時,那移植起來就有很多工作量了。三、基本思想 做最壞的打算,你的程式裡面用了很多Linux專屬的API(其實你也不能說全哪些是Linux專屬的API),然後移植到Windows下,編譯的時候報錯:找不到xxx.h的標頭檔,很明顯此xxx.h標頭檔在Windows中是沒有的,進而該標頭檔中聲明的某些函數也是Windows沒有的,或者Windows下類似的API不是放在這個標頭檔中聲明的。 此時,你考慮注釋掉這個#include<xxx.h>,接下來再編譯,不出意外應該是報錯:某某函數未定義。那麼這下就找到了xxx.h中被引用的函數了。於是下一步,你應該考慮是否Windows下有相對應的函數來完成類似的工作,如果你對Windows不熟,不好意思,只能上網查啦。MSDN是個好去處。 假設你找到了Windows下對應的函數,嘗試更換#include<xxx.h>,改成#include<yyy.h>(yyy.h是Windows下對應的那個API的聲明標頭檔),然後下面調用的地方也相應的做些小修改。然後再驗證結果是否正確。 假設你找不到Windows下對應的函數,不好意思,你杯具了。你得自己或者從網上找資料來用Windows的環境來構造一個新的API,情況一般會很麻煩,一般會讓人感到沮喪。四、新的希望 讓我們停下來想想,Linux下有這麼多好用的東西,很多東西人們都想移植到Windows下,只是你一個人碰到這個問題嗎?答案是否定的,已經有無數的人們遇到這個問題了。或許你又在想,有沒有一種工具,利用Windows的一些函數來實現Linux專屬的API嗎?恭喜你,真有! 下面請cygwin隆重出場。五、什麼是cygwin 與其我在這介紹cygwin是什麼,還不如直接看一下百科全書,當然啦,不是百度百科,是wiki百科。http://zh.wikipedia.org/wiki/Cygwin 六、cygwin怎麼用 這就是重點了,下面說說使用過程吧,親測。 下載cygwin,安裝cygwin,這個就不多說了。。。ps:在安裝cygwin的時候,如果不懂的話就全選了,但是代價是起碼10G+的硬碟空間,而且不知道要裝多久,我掛了兩天機。 安裝完之後,記得把C:\cygwin\bin添加到環境變數PATH中去,然後就啟動cygwin,看到一個shell介面(小黑框),然後把項目放到/home/michael下,然後進入到對應的目錄,make。很神奇,就這樣通過了。。。然後最好是把Makefile的TARGET改成xxx.exe,然後你試試,把xxx.exe拖出來雙擊運行或者放cmd裡面加上參數運行,是不是成功了?
使用cygwin移植Linux的項目到Windows下之總結(轉)