如何減小GacLib生成的可執行文件大小?
01-13
使用Visual Studio 2015編譯vczh-libraries/Release · GitHubTutorial中的示常式序,在Windows下生成的可執行文件、動態鏈接庫體積一般都很大。以「GacUI_HelloWorlds」解決方案為例,不更改任何代碼和編譯設置,在Debug模式下,生成的可執行文件、動態鏈接庫體積如下:
那麼如何減小GacLib生成的可執行文件大小?我想到的方法主要包括編譯器選項、GacLib庫裁剪、可執行文件壓縮三個方面,具體如下:
- GacUI.lib 207MB
- GacUI.pdb 37.6MB
- GacUILite.lib 52.6MB
- GacUILite.pdb 10.8MB
- Vlpp.lib 55.2MB
- Vlpp.pdb 8.66MB
- Workflow.lib 64.8MB
- Workflow.pdb 11.3MB
- Cpp.exe 12.9MB
- Cpp.pdb 59.4MB
- CppXml.exe 42.2MB
- CppXml.pdb 201MB
- MVVM.exe 42.4MB
- MVVM.pdb 201MB
- WorkflowScript.exe 42.2MB
- WorkflowScript.pdb 200MB
是否還有其他方法來減小可執行文件大小?
- 是否可以更改編譯器選項來減小生成的文件大小?具體可以更改哪些編譯選項?
- GacLib中是否提供類似「#define GACLIB_EXCLUDE_XXX_FEATURE」之類的編譯宏來控制一些功能是否參與編譯,以便於減小生成的動態鏈接庫大小?
- 是否可以對生成的可執行文件進行壓縮處理(例如UPX)來減小文件大小?
1、不要用XML,這樣就不需要鏈接GacUIReflection.cpp,就小了
2、過幾個月我會上線一個功能,使用XML也不需要GacUIReflection.cpp,就小了我的理念是通過鏈接或者不鏈接某個cpp來做EXCLUDE_XXX_FEATURE的功能。每個cpp都有它自己初始化的plugin,會替你做一些事情。
但是pdb和obj肯定是巨大的,debug的exe通常也是release的好幾倍,我只能幫你管到release的exe了。問題裡面的尺寸都是debug模式下的尺寸,會被VS混進超多debug用的信息。推薦閱讀:
※OCaml pattern有哪些葵花寶典?
※C語言if與else if寫成的這樣一段代碼效率上或者編譯完成後的結構上是否有區別(主要看補充內容中的詳細)?
※如何實現 C 語言編譯器?
※做編譯器優化開發是一種什麼樣的體驗?