2.9.1怎么这么巨大

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
liuyug
Experienced Solver
Experienced Solver
Posts: 53
Joined: Wed Jul 09, 2008 4:32 am

2.9.1怎么这么巨大

Post 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,怎么回事??
kingkamg
I live to help wx-kind
I live to help wx-kind
Posts: 187
Joined: Tue Apr 08, 2008 1:45 pm

Post by kingkamg »

没试过,不过2.9增加的东西比较多,当然bug也还不少
JenT
Earned some good credits
Earned some good credits
Posts: 114
Joined: Fri Oct 24, 2008 9:23 am

Re: 2.9.1怎么这么巨大

Post 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後才會穩定吧。
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Post by ollydbg23 »

我编译的 2.8.11 的单文件的 debug的dll大概是 95M。
对比一下你的 200多M的debug,是有点夸张,你可以去英文的wx讨论组去问问,看看别人编译出来有多大。

我感觉你这个太大了。。。
arust
Knows some wx things
Knows some wx things
Posts: 34
Joined: Tue Jan 15, 2008 5:13 am
Location: Beijing, China

Post by arust »

我用VC++ 2008静态编译2.9.1, debug和release的静态库共318M
JenT
Earned some good credits
Earned some good credits
Posts: 114
Joined: Fri Oct 24, 2008 9:23 am

Post 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。
呵呵。
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden »

2.9.x增加了很多东西,编译出来的东西确实大了不少。
不知道楼主的编译器是否是TDM的4.5.1。
GCC在新版中,生成的文件越来越大了,不过,性能上也要好些。
Life is not fair, get used to it.
cean
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Nov 05, 2010 11:31 pm

Post by cean »

我是用equation gcc 4.5 编的

gcc-lib库202M

看来要编个release版的。
Attachments
my.gif
my.gif (14.96 KiB) Viewed 12224 times
cean
Earned a small fee
Earned a small fee
Posts: 11
Joined: Fri Nov 05, 2010 11:31 pm

Post 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变哪项?
Equation gcc 4.5.1+wxWidgets 2.9.1+C::B 10.05 under win xp
xunxun1982
Earned a small fee
Earned a small fee
Posts: 12
Joined: Thu Oct 14, 2010 12:20 pm

Post 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
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post 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
Life is not fair, get used to it.
xunxun1982
Earned a small fee
Earned a small fee
Posts: 12
Joined: Thu Oct 14, 2010 12:20 pm

Post 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编译
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post 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
Life is not fair, get used to it.
xunxun1982
Earned a small fee
Earned a small fee
Posts: 12
Joined: Thu Oct 14, 2010 12:20 pm

Post by xunxun1982 »

我昨天也看到WXWIN_COMPATIBILITY_2_8了,他的默认值为1,如果改为0的话,是不是C::B的代码都要重写呢?

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

还有个问题,你的RUNTIME_LIBS=static为什么设置为static呢,他默认好像就是dynamic。
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post 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库的依赖。
Life is not fair, get used to it.
Post Reply