wxWidgets3.0.0的靜態編譯

    對於GUI編程,最先使用過VC6的MFC,以後使用過GTK,Java的Swing,前一段時間還擺弄過純Windows原生的Win32 API,如今則開始折騰wxWidgets,可是這些技術的學習瞭解並無作出像樣的軟件,基本都停留在把樣例編譯出來後,簡單的瞭解一些控件怎麼使用而已.以爲不能胡亂折騰下去了,應該用這些技術紮紮實實的作一些東西.c++

    工做是作嵌入式機頂盒軟件開發的,並且主要是Bootloader一塊,對GUI編程學習到的內容不能直接用於工做,這樣致使學習的效率極其底下.如今工做起來,就喜歡用make,不喜歡用IDE,IDE系列VC6, Eclipse, NetBeans, CodeBlocks, CodeLite, LiteIDE(Go)還有一些記不住名字的小IDE,總之,感受沒有必要學習IDE,啃下IDE大塊頭也是超級費時間.用make的好處在於我想怎麼讓編譯器工具爲我工做,就怎麼爲我工做,而IDE雖然也提供了很是人性化的編譯配置功能, 但是配置起來也麻煩的很.編程

    傾向於用綠色軟件,解壓即用,不用即刪,乾乾淨淨的來,乾乾淨淨的走.並且傾向於用靜態連接,全部的內容打包到一個exe中,固然這裏說的確定是一些小軟件,而那些一個軟件中由成百上千個文件組成的或支持插件的小型軟件,推薦用動態連接,這樣的軟件一我的估計也幹不出來,不過可能也有這樣的高人.工具

(1) 下載學習

wxWidgets-3.0.0.zip 主源碼包測試

wxMSW-3.0.0_gcc471TDM_ReleaseDLL.7z 用GCC4.7.1編譯的動態連接庫ui

wxMSW-3.0.0_gcc471TDM_Dev.7z 包括動態連接庫和導出庫(相似於靜態庫)插件

(2) 先用上面這幾個包,測試官方的HelloWorld示例.把wxWidgets-3.0.0\include與wxMSW-3.0.0_gcc471TDM_Dev\lib\gcc471TDM_dll\mswu 添加到編譯器頭文件搜索路徑中,把wxMSW-3.0.0_gcc471TDM_Dev\lib\gcc471TDM_dll添加到連接器的搜索路徑中,編譯器用的是官方的Mingw gcc4.7.1,編譯後的exe才280多KB,雙擊運行的時候,提示須要一些動態連接庫,把這些動態連接庫所在的路徑添加到系統的環境變量PATH中,便可以運行.orm

(3) 編譯wxWidgets的靜態庫.進入wxWidgets-3.0.0\build\msw,對config.gcc進行修ip

改,修改56行的爲:開發

BUILD ?= release

直接編譯發佈版本的靜態庫,而後執行mingw32-make -f makefile.gcc 開始編譯靜態庫,編譯的輸出在wxWidgets-3.0.0\lib\gcc_lib

(4) 編譯完成後將wxWidgets-3.0.0\lib\gcc_lib添加到連接器的搜索路徑,並把wxWidgets-3.0.0\lib\gcc_lib\mswu添加到編譯器的頭文件搜索路徑中.

(5) 再次編譯Hello World,發現生成的exe變大,而且還提示須要libgcc_s_dw2-1.dll與libstdc++.dll等,給連接器傳遞-static選項,再次生成exe,直接雙擊運行,再也不提示須要動態連接庫了,exe大小要8MB多.

(6)再次修改入wxWidgets-3.0.0\build\msw\config.gcc

修改35行爲:

LDFLAGS ?= -static

修改147行爲:

RUNTIME_LIBS ?= static (不確認這個修改是否起做用)

(7)進入wxWidgets-3.0.0\samples執行mingw32-make -f makefile.gcc,開始編譯示例代碼,完成後會在每一個示例代碼目錄下生成gcc_mswu目錄,這個目錄中存放編譯過程當中生成的目標文件和最終的示例程序,每一個示例程序的可執行文件也至少8MB多.

(8)拷貝wxFormBuilder目錄到wxWidgets-3.0.0,這樣wxWidgets的完整開發環境就基本搭建完成了.

(9)刪除wxMSW-3.0.0_gcc471TDM_ReleaseDLL.7z,wxMSW-3.0.0_gcc471TDM_Dev.7z與解開的文件夾.

相關文章
相關標籤/搜索