国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ZY's WordPress ? Windows下搭建開發(fā)跨平臺GUI程序環(huán)境:Cygwi...

最近使用Eclipse搭建了一個開發(fā)跨平臺GUI程序的環(huán)境,其實是將一些開發(fā)包、開發(fā)庫拼在一起使用,它們相互之間沒有什么緊密的聯(lián)系,不過這樣也保留了它們自有的特點。

下面首先說明一下這個開發(fā)環(huán)境中,幾個組成部分的特點,這也表明了我為什么選擇并組合使用它們的原因。隨后在后續(xù)文章中逐步說明搭建這個環(huán)境的步驟。

Cygwin

這個項目的名字來源于:GNU、Cygnus、Windows,3者的縮寫。Cygwin的目標是:構(gòu)建一套Windows下的Linux模擬環(huán)境。因此,Cygwin是一個龐大的項目,不只包括Linux下的開發(fā)環(huán)境,也包括工作環(huán)境,和各種各樣的Linux下的軟件。

在早期,Cygwin的核心是cygwin1.dll,可以認為它是一個POSIX界面的實現(xiàn),依靠這個動態(tài)鏈接庫,Unix/Linux下的軟件可以很容易的移植到Windows下,并且風(fēng)格保持原有的不變。不過隨著Cygwin的發(fā)展,越來越多的Unix/Linux程序的移植,建立基于Cygwin的復(fù)雜程序依賴的庫也越來越多,現(xiàn)在裝完默認配置的Cygwin后,就會發(fā)現(xiàn)有很多cyg打頭的動態(tài)鏈接庫。

目前Cygwin由RedHat維護和支持。在版權(quán)上,由于Cygwin不是一個軟件,而是由成百上千的軟件堆砌起來的系統(tǒng),里面有商業(yè)軟件的成分/概念,所以它的許可證有開源性質(zhì)的(GPL)和商業(yè)性質(zhì)的(從RedHat購買)兩種。

MinGW

這個項目的名字來源于:Minimalist GNU for Windows的縮寫。

最初,MinGW的目標定位為:Windows下的開源的開發(fā)環(huán)境。它包括一系列軟件:編譯工具、鏈接工具、轉(zhuǎn)儲工具、調(diào)試工具、和其它開發(fā)工具等。另一方面,MinGW還提供一些開源的基礎(chǔ)支持庫,像GNU的C/C++ RT庫(libc、libstdc++),POSIX的基本調(diào)用界面(包括pthread),甚至還有OpenGL和Windows API的調(diào)用接口等。幾乎所有MinGW中的軟件都是從GNU項目或Linux下移植到Windows下的。

后來MinGW有了一個子項目叫:MSYS,其中包括了更多的Linux工具,其目標類似Cygwin:構(gòu)建一套Windows下的Linux模擬環(huán)境。

總之,MinGW中的東西很雜,和Cygwin之間有相當一部分是重復(fù)的(目前,Cygwin項目中已經(jīng)集成MinGW了)。但MinGW和Cygwin的實現(xiàn)思路和設(shè)計思想是不同的:

  1. Cygwin通過一個中間層的動態(tài)鏈接庫,將位于下層的Windows API,和位于上層的使用POSIX界面的應(yīng)用連接起來,好處是應(yīng)用在Linux與Windows之間移植更加方便,風(fēng)格更加一致;缺點是發(fā)布應(yīng)用時一定要帶上Cygwin的環(huán)境動態(tài)庫,應(yīng)用執(zhí)行效率也略微有點低。

  2. MinGW在基礎(chǔ)支持庫層次,使用靜態(tài)鏈接的方式,這樣生成的應(yīng)用更加地本地化,應(yīng)用執(zhí)行效率也稍高一些。所以MinGW聲明:基于MinGW開發(fā)的應(yīng)用,不需要依賴任何第三方的C/C++ RT動態(tài)鏈接庫,僅依賴Windows自身的運行環(huán)境:

    MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs.

不過上面的結(jié)論不是絕對的,比如:

  • 當你使用MinGW GCC的-mthreads選項(和線程安全異常處理有關(guān))時,就會動態(tài)鏈接到 mingwm10.dll。

  • 還有如果你使用MinGW GCC 4.4.0默認選項編譯C++程序,就會動態(tài)鏈接到libgcc_s_dw2-1.dll,參考下面

    Dynamic linking with libgcc_s_dw2-1.dll is necessary to throw exceptions between different modules, such as between two DLLs or a DLL and an EXE. Consequently, it is the default for all languages other than C. To disable this dynamic linking, use -static-libgcc. To enable this dynamic linking in C, use -shared-libgcc.

MinGW的POSIX界面遠沒有Cygwin實現(xiàn)的那么全面(比如:連BSD/Linux Socket都沒有,只能用Winsock),所以看起來MinGW只是用來開發(fā)Windows專屬應(yīng)用的工具集。

在版權(quán)上,MinGW比Cygwin更開放些。

我用過MSYS和Cygwin之后,發(fā)現(xiàn)MSYS相比Cygwin還有很多不足:

  1. MSYS中的工具更像是Unix/Linux下的工具在Windows下的移植版,其中有些工具可以支持Windows的一些特征(比如:目錄分隔用"\"),而有些并沒有Unix/Linux下原始的版本那么好用(比如:bash、sed等)。而Cygwin是努力在Windows下構(gòu)建一套完全參照Unix/Linux體驗的環(huán)境。

  2. MSYS中的工具很雜,和MinGW中的工具交織在一起(有時,開發(fā)工具和實用程序的界限并不是很截然,況且經(jīng)常要配合使用),組織很松散,還有一些愛好者自己提供軟件包。如此,搭建基于MSYS的Unix/Linux環(huán)境變得稍繁瑣,你需要更加謹慎地考慮軟件包的依賴關(guān)系。而使用Cygwin就方便多了,它的安裝程序會歸類顯示軟件包的組織關(guān)系,還能一定程度上幫你解決軟件包的依賴關(guān)系。

最后我選擇了下面這種方式搭建Windows下的Unix/Linux開發(fā)環(huán)境:

  1. 使用Cygwin的Unix/Linux工作環(huán)境,比如:bash、tar、awk、sed、od、man等。

  2. 使用MinGW的C/C++開發(fā)工具,比如:binutils、gcc、gdb、make、strip等;使用MinGW的基礎(chǔ)支持庫,比如:GNU的libc、libstdc++、POSIX的基本調(diào)用界面等。

  3. 根據(jù)需要,使用額外的支持/開發(fā)庫,比如:pthread、openssl、libiconv、gettext、boost、wxWidgets等。

注意:

  1. 有些支持/開發(fā)庫可以在MinGW項目的Sourceforge下載地址找到,像pthread(mingw gcc-4.4中包含)、openssl、libiconv、gettext等。也可以從這些庫官方的項目地址,或其它的Windows移植版項目地址下載,總之,它們之間的聯(lián)系比較松散。

  2. 如果有一些程序,在MinGW和Cygwin安裝后有重復(fù),可以用各種技巧設(shè)定它們被選擇的優(yōu)先級,比如:設(shè)置PATH環(huán)境變量中的搜索目錄順序,建立符號鏈接等方法。

Eclipse

開源的IDE環(huán)境,本身用Java實現(xiàn),但絕不是只能作為Java的IDE,它有著豐富的擴展,當使用CDT后,Eclipse就成為強大的C/C++ IDE。Eclipse-CDT的源程序符號檢索功能很強大,是我見過的最準確、最方便的C/C++符號檢索功能,比SourceInsight、VC內(nèi)置的Intellisense、VC的Visual Assist X插件都強大,比Emacs的CEDET模式中的Semantic的配置更方便。無論多么復(fù)雜的C/C++語法和工程配置管理,Eclipse-CDT都可以為你生成“當前工程的當前配置項”下的源程序符號索引數(shù)據(jù)庫,幫你可以方便的查看/編輯源代碼。不像SourceInsight和Visual Assist X,它們在解析像MFC那種“宏套宏”的奇怪語法時,或者在工程依賴、多配置項等復(fù)雜配置管理下就力不從心了。當然,Eclipse-CDT這種準確的符號檢索功能是以“花費更長時間來生成索引數(shù)據(jù)庫”為代價的:我為wxWidgets-2.8.10庫工程建立源程序索引就用了1分鐘左右,建立的索引數(shù)據(jù)庫文件(.pdom)大小在35MB以上。當你頻繁的在一個大工程的多個配置項之間切換時,這種速度慢的感覺就會更明顯。不過一般來說,花費時間來建立準確的源程序索引數(shù)據(jù)庫是值得的。

wxWidgets

開源的C++支持庫,GUI開發(fā)支持是其重點,但不局限于此:也包括很多基礎(chǔ)性的功能支持,像字符串、locale機制、Socket等。wxWidgets庫的架構(gòu)風(fēng)格很像微軟的MFC,并且都是包羅萬象型的類庫,適合熟悉MFC的開發(fā)者轉(zhuǎn)型。支撐wxWidgets的下層運行環(huán)境/庫有多種選擇:Windows API、GTK、Motif、MacOS、X11、MGL等,所以wxWidgets應(yīng)用可以很容易的移植到多種系統(tǒng)平臺上。只要有可能,wxWidgets總是優(yōu)先使用本地平臺/庫的API來實現(xiàn)其自身界面,這樣保證了界面繪制的效率,例如:在Windows下,wxWidgets和MFC相似,通過調(diào)用Windows API來繪制窗口。但wxWidgets也有一個wxUniversal版本,是自己繪制界面元素的。wxWidgets庫也有其它語言的調(diào)用界面,例如:Python、Perl、Ruby等。


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
比較MingW與Cygwin(搜集) - 姚中凱的日志 - 網(wǎng)易博客
開源 IDE CodeBlocks 使用感受
如何搭建MinGW、CodeBlock和wxWidgets環(huán)境
libcstl在windows和VC上安裝
mingw跟cgywin的gcc編譯器區(qū)別
Windows 環(huán)境下 git 客戶端中的 git-bash 和 MINGW64
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服