wxWidgets 2.9.2(3.x)最小体积编译方法,该如何处理
wxWidgets 2.9.2(3.x)最小体积编译方法
官方论坛、网上记录的wxWidgets编译方法,会导致编译后的程序库非常大,原因在于对编译的方法选择不当。
下面简单总结一下如何编译最新的SVN代码。
下载最新源码或者svn checkout:
http://biolpc22.york.ac.uk/pub/Daily_HEAD/
得到源码后,我的编译方法如下:
说明:
1. 准备工作的第一步是必须的,因为svn版,setup0.h可能发生变化,所以需要删除旧setup.h,以便生成最新的setup.h
2. 准备工作的第二步是建议的,强烈建议修改代码以适应新版本
3. 修改makefile.gcc或者makefile.vc,是为了把最终生成的dll的编译器标志去除,因为不好看。
4. 为了减小体积,对所有的编译都加了尺寸优化的编译选项,VC是/Os,GCC是-Os,及加了优化尺寸的链接选项。
5. 为了减小体积,Debug版中不再保留DEBUG信息,因为很少有调试到wx库内部的时候。
最终生成的wxmsw292u.dll动态库,VC版只有7.87MB,而GCC版稍大些,10MB。
除了一个opengl的dll外,这已经是所有wx库的dll大小了。
------解决方案--------------------
我也不够了 来看看
------解决方案--------------------
顶一下,就是3.0的更新遥遥无期啊。另外发现2.9和2.8的兼容性极差,我在2.8.11下跑的好好的程序,到2.9下面密密麻麻的错误。
------解决方案--------------------
wx的稳定性如何啊?我记得1991年就有这个东西了。为什么这么多年过去了都没有像样的发展?
------解决方案--------------------
其实wx和Qt都可以根据自己的项目进行缩减组件,不编译就行了,这样也会大大减小体积。
------解决方案--------------------
QT主要有钱,wx主要没有钱。
不过我还是支持wx!!!
官方论坛、网上记录的wxWidgets编译方法,会导致编译后的程序库非常大,原因在于对编译的方法选择不当。
下面简单总结一下如何编译最新的SVN代码。
下载最新源码或者svn checkout:
http://biolpc22.york.ac.uk/pub/Daily_HEAD/
- C/C++ code
svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk
得到源码后,我的编译方法如下:
- C/C++ code
准备工作: 1. 删除include\wx\msw\setup.h(如果该文件已经存在) 2. 修改setup0.h,搜索“WXWIN_COMPATIBILITY_2_8”,修改其值为0,即放弃对wx2.8代码的兼容,强制用户更新代码。 GCC版本: 修改makefile.gcc文件:区分大小写搜索"_gcc" mingw32-make -f makefile.gcc CPPFLAGS=-Os LDFLAGS=-s SHARED=1 BUILD=debug UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=1 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static mingw32-make -f makefile.gcc CPPFLAGS=-Os LDFLAGS=-s SHARED=1 BUILD=release UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static VC版本: 修改makefile.vc文件:区分大小写搜索"_vc" nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=debug SHARED=1 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=1 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=release SHARED=1 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static VC静态版: nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=release SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static
说明:
1. 准备工作的第一步是必须的,因为svn版,setup0.h可能发生变化,所以需要删除旧setup.h,以便生成最新的setup.h
2. 准备工作的第二步是建议的,强烈建议修改代码以适应新版本
3. 修改makefile.gcc或者makefile.vc,是为了把最终生成的dll的编译器标志去除,因为不好看。
4. 为了减小体积,对所有的编译都加了尺寸优化的编译选项,VC是/Os,GCC是-Os,及加了优化尺寸的链接选项。
5. 为了减小体积,Debug版中不再保留DEBUG信息,因为很少有调试到wx库内部的时候。
最终生成的wxmsw292u.dll动态库,VC版只有7.87MB,而GCC版稍大些,10MB。
除了一个opengl的dll外,这已经是所有wx库的dll大小了。
------解决方案--------------------
我也不够了 来看看
------解决方案--------------------
顶一下,就是3.0的更新遥遥无期啊。另外发现2.9和2.8的兼容性极差,我在2.8.11下跑的好好的程序,到2.9下面密密麻麻的错误。
------解决方案--------------------
wx的稳定性如何啊?我记得1991年就有这个东西了。为什么这么多年过去了都没有像样的发展?
------解决方案--------------------
其实wx和Qt都可以根据自己的项目进行缩减组件,不编译就行了,这样也会大大减小体积。
------解决方案--------------------
QT主要有钱,wx主要没有钱。
不过我还是支持wx!!!