wxWidgets 2.9.2svn(3.x)最小體積編譯方法
官方論壇、網上記錄的wxWidgets編譯方法,會導致編譯後的程式庫非常大,原因在於對編譯的方法選擇不當。
下面簡單總結一下如何編譯最新的SVN程式碼。
下載最新原始碼(每日構建):http://biolpc22.york.ac.uk/pub/Daily_HEAD/
或者使用subversion檢出:http://www.wxwidgets.org/develop/svn.htm
準備工作:
1. 刪除include/wx/msw/setup.h(如果該檔案已經存在)
2. 修改setup0.h,設定以下巨集的值為 0 !
WXWIN_COMPATIBILITY_2_8
wxUSE_EXCEPTIONS
GCC版本:
修改makefile.gcc檔案:區分大小寫搜尋"_gcc",替換成""
VC版本:
修改makefile.vc檔案:區分大小寫搜尋"_vc",替換成""
VC靜態版:
大家在編譯時,可以視情況調整選項,由於我在編譯wxWidgets時,習慣一個工程要同時相容VC和GCC編譯器,而且一些小程式,喜歡在最終釋出時使用靜態連結釋出的方法,所以才有了上面的三個版本。
通過這些選項,可以最大程度的減小生成的庫的大小,以及靜態連結要執行檔案的大小。
你便會發現,其實通過適當的方法,是可以儘量的減小wxWidgets生成庫的大小的。
以今天的svn原始碼為例:
(GCC版)wxmsw292u.dll 6.65MB
(VC版)wxmsw292u.dll 6.66MB
靜態版可執行檔案:
(GCC版)2.01MB
(VC版)1.31MB
其中兩個選項:USE_EXCEPTIONS=0 USE_RTTI=0由於在wxWidgets庫中不使用RTTI和異常,這會大幅度減小可執行檔案的體積(減小30%左右),取消這兩個選項,只能說明在wx庫中不再支援RTTI和異常,但不程式碼你基於wx的程式中不能使用RTTI和異常!
至於這兩個開關是否導致wx的功能缺少,這我目前還沒有查詢到任何依據。
不過,官方的wiki是支援這種做法的:http://wiki.wxwidgets.org/Reducing_Executable_Size
可以確定的是:使用VC編譯器對最終程式的發行,無論是程式體積、還是速度,都明顯優於GCC(MinGW)。
基於wxWidgets開發的朋友,如果要在Windows平臺上釋出程式,建議使用VC。
說明:
- VC編譯器在優化體積的其他一些做法,例如/ALIGN、 /MERGE選項,通過實踐證明,不但不能減小wxWidgets編譯後的二進位制體積,反而起到相反的效果。
- 以上測試只在Windows平臺測試通過,並未在Linux平臺進行驗證。
版權所有,如需轉載,敬請註明出處!
相關文章
- 編譯最小linux系統編譯Linux
- gRPC by .net core 3.x——概念、語法、編譯RPC編譯
- wxWidgets初學者導引(4)——wxWidgets學習資料及利用方法指導
- 史上體積最小、功能最多的VxRail即將上市!AI
- android編譯方法Android編譯
- 開源編譯工具和編譯軟體編譯
- Android反編譯:反編譯工具和方法Android編譯
- 清理微控制器編譯過程中產生的編譯檔案(壓縮以減少專案體積)編譯
- hi3520d核心編譯編譯方法編譯
- 編寫相容 Python 2.x 和 3.x 程式碼的方法Python
- wxWidgets Ubuntu下安裝 配置 編譯 建立專案 實現“hello world”(CodeBlocks)詳細圖文教程Ubuntu編譯BloC
- 世界上體積最小、重量最輕的攝像無人機問世無人機
- QEMU編譯及使用方法編譯
- Camera Sensor編譯方法編譯
- Typora編譯器使用方法編譯
- wxWidgets進度條
- 英特爾釋出體積最小功耗最低處理器“凌動”
- ASP.NET Core 3.x Razor檢視執行時重新整理實時編譯ASP.NET編譯
- 編譯器優化:方法內聯編譯優化
- openssl原始碼編譯及配置方法原始碼編譯
- Genome2D編譯方法編譯
- Vue CLI 3.X 初體驗Vue
- Vue3 模板編譯原理 (Vue 的編譯模組整體邏輯)Vue編譯原理
- docker映象體積優化方法與實踐Docker優化
- 如何 Docker 化編譯的軟體Docker編譯
- 自己動手編譯NodeMCU韌體編譯
- 【譯】新的 MSBuild 編輯體驗UI
- 騰訊物聯網作業系統正式開源,最小體積僅1.8KB作業系統
- 編譯檢查dsp程式碼的方法編譯
- oracle 儲存過程重新編譯方法Oracle儲存過程編譯
- EJB Finder方法編譯出錯,請教!!!編譯
- android 防止反編譯的若干方法Android編譯
- 卷積自編碼卷積
- 「典」P5540 最小乘積相關問題
- WxWidgets學習日記[zz]
- Vue CLI 3.x 簡單體驗Vue
- Java編譯與反編譯Java編譯
- [譯]讓員工保持積極性的六大方法