在Windows上用過Cygwin的人都很清楚一點, 全部基於Cygwin的項目在底層都必須依賴於cygwin1.dll這個文件, 並且任何以Cygwin環境來構建的軟件在運行時也必須依賴cygwin1.dll。所以, 對於想讓軟件實現靜態編譯的人來講, 擺脫對cygwin1.dll的依賴便成了一個頭疼的問題。html
關於去除對cygwin1.dll文件依賴這個問題, Cygwin的官網明確說明不能夠, 並且這還涉及到Cygwin的許可證的問題。去網上搜索一下就能夠發現, 在老版本的Cygwin中使用-mno-cygwin參數就能夠解決問題了, 可是對於如今使用的版原本說, 這個參數是爲無效的。你們廣泛的解決辦法就是, 要不就帶着cygwin1.dll運行, 要不就用MinGW工具鏈來編譯。難道就沒有其餘的辦法了嗎?函數
如今, 咱們來仔細分析一下這個問題。若是軟件源碼能用MinGW工具鏈來構建, 那理所固然是最好的了, 徹底能夠不依賴cygwin1.dll。若是沒法使用MinGW構建, 那麼只有如下幾種狀況:工具
對於2和3, 到目前爲止還真的沒有什麼特別好的解決方案, 可是對於1, 仍是能夠去克服的, 具體方法也能夠分爲幾種:.net
在Windows中, 某些API是與POSIX標準所兼容的, 因此方法1能夠去試一試。至於方法2, 一方面能夠本身去試着封裝Windows底層的API而後調用, 另外一方面也能夠去參照現成的代碼稍做修改後調用。可是存在的最大的不足之處就在於, 某些API調用如Linux下的fork(), 在Windows下面就較難去經過修改代碼實現。htm
所以, 不是說, 全部的軟件, 在全部的狀況下, 都可以擺脫對cygwin1.dll文件的依賴的。ci
在最後, 與你們分享一些項目, 能夠幫助你們把項目從Linux方便的移植到Windows上面:get