Page 1 of 2

2.9.1怎么这么巨大

Posted: Wed Sep 15, 2010 7:11 am
by liuyug
用GCC4.5.1静态编译2.9.1
196,030 libwxexpat.a
345,704 libwxexpatd.a
144,366 libwxjpeg.a
831,390 libwxjpegd.a
39,287,644 libwxmsw29u.a
204,313,824 libwxmsw29ud.a
881,842 libwxmsw29ud_gl.a
208,452 libwxmsw29u_gl.a
164,978 libwxpng.a
536,164 libwxpngd.a
80,420 libwxregexu.a
168,058 libwxregexud.a
1,412,970 libwxscintilla.a
4,531,200 libwxscintillad.a
381,994 libwxtiff.a
895,998 libwxtiffd.a
70,942 libwxzlib.a
170,392 libwxzlibd.a
疯了,debug版204M,release版39M
我编译2.8.1,才几十M,怎么回事??

Posted: Wed Sep 15, 2010 9:48 am
by kingkamg
没试过,不过2.9增加的东西比较多,当然bug也还不少

Re: 2.9.1怎么这么巨大

Posted: Fri Sep 17, 2010 4:55 pm
by JenT
liuyug wrote:用GCC4.5.1静态编译2.9.1
196,030 libwxexpat.a
345,704 libwxexpatd.a
144,366 libwxjpeg.a
831,390 libwxjpegd.a
39,287,644 libwxmsw29u.a
204,313,824 libwxmsw29ud.a
881,842 libwxmsw29ud_gl.a
208,452 libwxmsw29u_gl.a
164,978 libwxpng.a
536,164 libwxpngd.a
80,420 libwxregexu.a
168,058 libwxregexud.a
1,412,970 libwxscintilla.a
4,531,200 libwxscintillad.a
381,994 libwxtiff.a
895,998 libwxtiffd.a
70,942 libwxzlib.a
170,392 libwxzlibd.a
疯了,debug版204M,release版39M
我编译2.8.1,才几十M,怎么回事??
你用vs編一下,好像沒那麼大。
gcc正常的size是vc的1.5倍~2.0倍大。
不然就把一些元件config.gcc的一些元件去掉。
我用mingw4.4.4編wxmsw2.9.1,好像有錯誤。
我還是繼續用wxmsw2.8.11。
等待wxmsw2.8.12出來。呵呵
2.9x系列,要等3.0後才會穩定吧。

Posted: Sun Sep 19, 2010 11:44 pm
by ollydbg23
我编译的 2.8.11 的单文件的 debug的dll大概是 95M。
对比一下你的 200多M的debug,是有点夸张,你可以去英文的wx讨论组去问问,看看别人编译出来有多大。

我感觉你这个太大了。。。

Posted: Tue Sep 21, 2010 3:58 am
by arust
我用VC++ 2008静态编译2.9.1, debug和release的静态库共318M

Posted: Wed Sep 22, 2010 6:10 am
by JenT
arust wrote:我用VC++ 2008静态编译2.9.1, debug和release的静态库共318M
我用tdm-gcc 4.5.1+strip -s 編譯wxmsw2.8.11(.dll),是6.06mb
用vs2008 編譯wxmsw2.8.11(.dll),是5.83mb。

gcc 的code size已經快要接近vs2008了。好棒!!

由於你用靜態編的library。
你可以試試產生出來的.exe檔。應該不會那麼大。
因為linker會把不需要的code,去除才是。

不過gcc在產生exe檔,好像還大於vs2008。
呵呵。

Posted: Sun Oct 17, 2010 2:51 am
by Loaden
2.9.x增加了很多东西,编译出来的东西确实大了不少。
不知道楼主的编译器是否是TDM的4.5.1。
GCC在新版中,生成的文件越来越大了,不过,性能上也要好些。

Posted: Sat Nov 06, 2010 1:44 am
by cean
我是用equation gcc 4.5 编的

gcc-lib库202M

看来要编个release版的。

Posted: Sun Nov 07, 2010 2:45 am
by cean
c:\wxWidgets-2.9.1\samples\minimal\gcc_mswud\minimal.exe 60M

把c:\wxWidgets-2.9.1\build\msw\config.gcc变了变,如下:
BUILD ?= release
又重新编译了一次wxWidgets,

现在c:\wxWidgets-2.9.1\samples\minimal\gcc_mswu\minimal.exe 11M

还是大。

要编译成dll的,config.gcc变哪项?

Posted: Sat Nov 13, 2010 1:20 pm
by xunxun1982
cean wrote:c:\wxWidgets-2.9.1\samples\minimal\gcc_mswud\minimal.exe 60M

把c:\wxWidgets-2.9.1\build\msw\config.gcc变了变,如下:
BUILD ?= release
又重新编译了一次wxWidgets,

现在c:\wxWidgets-2.9.1\samples\minimal\gcc_mswu\minimal.exe 11M

还是大。

要编译成dll的,config.gcc变哪项?
shared改为1

Posted: Sat Nov 13, 2010 1:41 pm
by Loaden
用这个配置编译吧,体积要小的多!
因为2.9.x默认在release版本中也使用debug信息。

Code: Select all

nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=release SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=1 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static >nul

nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=debug SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static >nul

Posted: Sun Nov 14, 2010 8:40 am
by xunxun1982
Loaden wrote:用这个配置编译吧,体积要小的多!
因为2.9.x默认在release版本中也使用debug信息。

Code: Select all

nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=release SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=1 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static >nul

nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=debug SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static >nul
Loaden你也同意用Os编译了?我以为你都是用O2编译

Posted: Mon Nov 22, 2010 2:20 am
by Loaden
xunxun1982 wrote:
Loaden wrote:用这个配置编译吧,体积要小的多!
因为2.9.x默认在release版本中也使用debug信息。

Code: Select all

nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=release SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=1 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static >nul

nmake -f makefile.vc CPPFLAGS=/Os LDFLAGS="/MANIFEST:NO /OPT:REF /OPT:ICF" BUILD=debug SHARED=0 UNICODE=1 DEBUG_INFO=0 DEBUG_FLAG=0 MONOLITHIC=1 OFFICIAL_BUILD=1 RUNTIME_LIBS=static >nul
Loaden你也同意用Os编译了?我以为你都是用O2编译
呵呵,我更关注体积了。

最新编译2.9.2svn得到的大小,VC的debug版11.5MB,Release版7.69MB。
GCC的稍大2MB左右。

配置:
准备工作:
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

Posted: Mon Nov 22, 2010 5:20 am
by xunxun1982
我昨天也看到WXWIN_COMPATIBILITY_2_8了,他的默认值为1,如果改为0的话,是不是C::B的代码都要重写呢?

还有你那个gcc版本的配置有些问题,
BUILD=debug时,LDFLAGS不要加-s,否则会消除调试符号,造成调试困难。

还有个问题,你的RUNTIME_LIBS=static为什么设置为static呢,他默认好像就是dynamic。

Posted: Mon Nov 22, 2010 6:03 am
by Loaden
xunxun1982 wrote:我昨天也看到WXWIN_COMPATIBILITY_2_8了,他的默认值为1,如果改为0的话,是不是C::B的代码都要重写呢?

还有你那个gcc版本的配置有些问题,
BUILD=debug时,LDFLAGS不要加-s,否则会消除调试符号,造成调试困难。

还有个问题,你的RUNTIME_LIBS=static为什么设置为static呢,他默认好像就是dynamic。
不需要重写,只要改写不兼容的代码就可以了。

LDFLAGS=-s的目的,是不想调试wx库本身,这并不影响你基于wx开发的程序的调试。
你只是无法进入wx的源码罢了。

RUNTIME_LIBS=static的话,编译后,就不会依赖msvc*.dll.
如果是GCC编译器的话,就无所谓了。
但VC编译器,使用static的话,省了MSVC动态CRT库的依赖。