使用cygwin移植Linux的項目到Windows下之總結(轉)

來源:互聯網
上載者:User

標籤:

使用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下之總結(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.