From: Luke D. <cod...@ho...> - 2003-04-16 02:53:36
|
>From: "Devin Smith" <de...@ea...> >To: <Min...@li...> >Subject: [Mingw-users] mingw g++ bloat problem ? >Date: Tue, 15 Apr 2003 18:46:28 -0700 > > >Hello, > >I am trying to figure out why my final executable on Windows is so >large compared to other operating systems. The program is a simple >program that computes the natural log of a few different numbers. >I originally thought that this was a g++ problem but after running >a few tests I have found that mingw g++ always produces larger >executables. > >I believe that mingw g++ may be linking some static library into >the executable but I am not sure how to check the dependancies on >Windows. (Is there a "ldd" for Win32 ?) You can check the "imports" section in the output of "objdump -p" or you can use Dependency Walker (www.dependencywalker.com). [snip] > >g++ -v (on Windows) >Reading specs from C:/mingw/bin/../lib/gcc-lib/mingw32/3.2/specs >Configured with: >../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host= >mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls >--en >able >-languages=f77,c++,objc,ada --disable-win32-registry --disable-shared This --disable-shared option is what you are interested in. MinGW libstdc++ is statically linked while those other systems use a shared libstdc++. If it is really important to you then you might try building libstdc++ as a DLL but I don't know how difficult it would be. I seem to remember that many people didn't want this to become the default for MinGW because it would cause too many problems with using the wrong version of the DLL at runtime, but that might be out of date. >Thread model: win32 >gcc version 3.2 (mingw special 20020817-1) > >using -fno-exceptions and -fno-rtti only saves about 1kb on the Win32 EXE. > > >Thanks, >Devin Smith. Luke _________________________________________________________________ MSN Instant Messenger now available on Australian mobile phones. Go to http://ninemsn.com.au/mobilecentral/hotmail_messenger.asp |
From: Sternbach, W. [IT] <wil...@ci...> - 2003-04-17 14:30:45
|
Devin, On Windows 2000 Professional, I have a C++ program which suffers the same bloat problem under gcc 3.2, but not under gcc 3.2.2. You may wish to upgrade to gcc 3.2.2, and then recompile to see if this will fix your bloat problem (as it did mine). - Bill -----Original Message----- From: Devin Smith [mailto:de...@ea...] Sent: Tuesday, April 15, 2003 9:46 PM To: Min...@li... Subject: [Mingw-users] mingw g++ bloat problem ? Hello, I am trying to figure out why my final executable on Windows is so large compared to other operating systems. The program is a simple program that computes the natural log of a few different numbers. I originally thought that this was a g++ problem but after running a few tests I have found that mingw g++ always produces larger executables. I believe that mingw g++ may be linking some static library into the executable but I am not sure how to check the dependancies on Windows. (Is there a "ldd" for Win32 ?) After compilation I did run "strip" on Project1. compilation (for Win32): g++ -Wall -O2 -c -o main.o main.cpp g++ -Wall -O2 -o Project1.exe main.o compilation (for Solaris and Linux): g++ -Wall -O2 -c -o main.o main.cpp g++ -Wall -O2 -o Project1 main.o size of Project1 on Solaris 4680 bytes size of Project1 on Linux 4264 bytes size of Project1.exe on Windows 211,968 bytes ldd output for Project1 on Solaris libstdc++.so.2.10.0 =3D> /usr/local/gnu/lib/libstdc++.so.2.10.0 libm.so.1 =3D> /usr/lib/libm.so.1 libc.so.1 =3D> /usr/lib/libc.so.1 libdl.so.1 =3D> /usr/lib/libdl.so.1 /usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1 ldd output for Project1 on Linux libstdc++.so.5 =3D> /usr/lib/libstdc++.so.5 (0x4001d000) libm.so.6 =3D> /lib/libm.so.6 (0x400d1000) libgcc_s.so.1 =3D> /usr/lib/libgcc_s.so.1 (0x400f4000) libc.so.6 =3D> /lib/libc.so.6 (0x400fc000) /lib/ld-linux.so.2 =3D> /lib/ld-linux.so.2 (0x40000000) g++ -v (on Solaris) Reading specs from /usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3/specs gcc version 2.95.3 20010315 (release) g++ -v (on Linux) Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/3.2.2/specs Configured with: ../gcc-3.2.2/configure --prefix=3D/usr --enable-shared = --enable-threads=3Dposix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose = --target=3Di3 86-slackware-linux --host=3Di386-slackware-linux Thread model: posix gcc version 3.2.2 g++ -v (on Windows) Reading specs from C:/mingw/bin/../lib/gcc-lib/mingw32/3.2/specs Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=3D mingw32 --target=3Dmingw32 --prefix=3D/mingw --enable-threads = --disable-nls --en able -languages=3Df77,c++,objc,ada --disable-win32-registry --disable-shared Thread model: win32 gcc version 3.2 (mingw special 20020817-1) using -fno-exceptions and -fno-rtti only saves about 1kb on the Win32 = EXE. Thanks, Devin Smith. ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ MinGW-users mailing list Min...@li... You may change your MinGW Account Options or unsubscribe at: https://lists.sourceforge.net/lists/listinfo/mingw-users |
From: ironhead <iro...@ro...> - 2003-04-18 18:43:34
|
Hey, I've found the opposite. Using gcc 3.2 the exe was about 70 KB (after stripping), with 3.2.2, the exe is 228 KB (even after stripping). Were the default link options changes between the two versions? If so, anybody know what options I should be using? Currently I've got: CFLAGS=-O2 -Wall -mno-cygwin LDFLAGS=-mno-cygwin Using gcc -v, I noticed 3.2.2 includes --enable-sjlj-exceptions, could this be the culprit? Cheers! Chris > -----Original Message----- > From: min...@li... [mailto:mingw-users- > ad...@li...] On Behalf Of Sternbach, William [IT] > Sent: Thursday, April 17, 2003 10:23 AM > To: Devin Smith > Cc: Min...@li... > Subject: RE: [Mingw-users] mingw g++ bloat problem ? > > Devin, > > On Windows 2000 Professional, > I have a C++ program which suffers the same bloat problem under > gcc 3.2, but not under gcc 3.2.2. > > You may wish to upgrade to gcc 3.2.2, and then recompile to see > if this will fix your bloat problem (as it did mine). > > - Bill > > -----Original Message----- > From: Devin Smith [mailto:de...@ea...] > Sent: Tuesday, April 15, 2003 9:46 PM > To: Min...@li... > Subject: [Mingw-users] mingw g++ bloat problem ? > > > > Hello, > > I am trying to figure out why my final executable on Windows is so > large compared to other operating systems. The program is a simple > program that computes the natural log of a few different numbers. > I originally thought that this was a g++ problem but after running > a few tests I have found that mingw g++ always produces larger > executables. > > I believe that mingw g++ may be linking some static library into > the executable but I am not sure how to check the dependancies on > Windows. (Is there a "ldd" for Win32 ?) > > After compilation I did run "strip" on Project1. > > compilation (for Win32): > g++ -Wall -O2 -c -o main.o main.cpp > g++ -Wall -O2 -o Project1.exe main.o > > compilation (for Solaris and Linux): > g++ -Wall -O2 -c -o main.o main.cpp > g++ -Wall -O2 -o Project1 main.o > > size of Project1 on Solaris 4680 bytes > size of Project1 on Linux 4264 bytes > size of Project1.exe on Windows 211,968 bytes > > ldd output for Project1 on Solaris > > libstdc++.so.2.10.0 => /usr/local/gnu/lib/libstdc++.so.2.10.0 > libm.so.1 => /usr/lib/libm.so.1 > libc.so.1 => /usr/lib/libc.so.1 > libdl.so.1 => /usr/lib/libdl.so.1 > /usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1 > > ldd output for Project1 on Linux > > libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4001d000) > libm.so.6 => /lib/libm.so.6 (0x400d1000) > libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x400f4000) > libc.so.6 => /lib/libc.so.6 (0x400fc000) > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) > > > g++ -v (on Solaris) > Reading specs from > /usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3/specs > gcc version 2.95.3 20010315 (release) > > g++ -v (on Linux) > Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/3.2.2/specs > Configured with: > ../gcc-3.2.2/configure --prefix=/usr --enable-shared --enable- > threads=posix > --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose -- > target=i3 > 86-slackware-linux > --host=i386-slackware-linux > Thread model: posix > gcc version 3.2.2 > > g++ -v (on Windows) > Reading specs from C:/mingw/bin/../lib/gcc-lib/mingw32/3.2/specs > Configured with: > ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host= > mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls -- > en > able > -languages=f77,c++,objc,ada --disable-win32-registry --disable-shared > Thread model: win32 > gcc version 3.2 (mingw special 20020817-1) > > using -fno-exceptions and -fno-rtti only saves about 1kb on the Win32 EXE. > > > Thanks, > Devin Smith. > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users |
From: ironhead <iro...@ro...> - 2003-04-19 20:26:59
|
I just did a little more reading, and it seems that quite a few people seem to be getting smaller exe size with 3.2.2. I really don't understand why between 3.2 and 3.2.2 for me anyway, the exe is nearly three times the size. I've implemented a replacement system tray for a explorer replacement shell I'm playing around with, and as such, I need to link to uuid, ole32 and comctl32. Using objdump, I noticed that in the 3.2 build, there seems to be a few less msvcrt functions included, tho I'm not sure if that would make a difference. I've also read that 3.x introduced more extensive Exception Handling, which is cool, so I can understand if the exe was large between 2.95 and 3.2.2, but what's the major difference between 3.2 and 3.2.2? Cheers! Chris > -----Original Message----- > From: min...@li... [mailto:mingw-users- > ad...@li...] On Behalf Of ironhead > Sent: Friday, April 18, 2003 2:41 PM > To: Min...@li... > Subject: RE: [Mingw-users] mingw g++ bloat problem ? > > Hey, > > I've found the opposite. Using gcc 3.2 the exe was about 70 KB (after > stripping), with 3.2.2, the exe is 228 KB (even after stripping). Were > the default link options changes between the two versions? If so, > anybody know what options I should be using? > > Currently I've got: > > CFLAGS=-O2 -Wall -mno-cygwin > LDFLAGS=-mno-cygwin > > Using gcc -v, I noticed 3.2.2 includes --enable-sjlj-exceptions, could > this be the culprit? > > Cheers! > > Chris > > > -----Original Message----- > > From: min...@li... [mailto:mingw-users- > > ad...@li...] On Behalf Of Sternbach, William [IT] > > Sent: Thursday, April 17, 2003 10:23 AM > > To: Devin Smith > > Cc: Min...@li... > > Subject: RE: [Mingw-users] mingw g++ bloat problem ? > > > > Devin, > > > > On Windows 2000 Professional, > > I have a C++ program which suffers the same bloat problem under > > gcc 3.2, but not under gcc 3.2.2. > > > > You may wish to upgrade to gcc 3.2.2, and then recompile to see > > if this will fix your bloat problem (as it did mine). > > > > - Bill > > > > -----Original Message----- > > From: Devin Smith [mailto:de...@ea...] > > Sent: Tuesday, April 15, 2003 9:46 PM > > To: Min...@li... > > Subject: [Mingw-users] mingw g++ bloat problem ? > > > > > > > > Hello, > > > > I am trying to figure out why my final executable on Windows is so > > large compared to other operating systems. The program is a simple > > program that computes the natural log of a few different numbers. > > I originally thought that this was a g++ problem but after running > > a few tests I have found that mingw g++ always produces larger > > executables. > > > > I believe that mingw g++ may be linking some static library into > > the executable but I am not sure how to check the dependancies on > > Windows. (Is there a "ldd" for Win32 ?) > > > > After compilation I did run "strip" on Project1. > > > > compilation (for Win32): > > g++ -Wall -O2 -c -o main.o main.cpp > > g++ -Wall -O2 -o Project1.exe main.o > > > > compilation (for Solaris and Linux): > > g++ -Wall -O2 -c -o main.o main.cpp > > g++ -Wall -O2 -o Project1 main.o > > > > size of Project1 on Solaris 4680 bytes > > size of Project1 on Linux 4264 bytes > > size of Project1.exe on Windows 211,968 bytes > > > > ldd output for Project1 on Solaris > > > > libstdc++.so.2.10.0 => /usr/local/gnu/lib/libstdc++.so.2.10.0 > > libm.so.1 => /usr/lib/libm.so.1 > > libc.so.1 => /usr/lib/libc.so.1 > > libdl.so.1 => /usr/lib/libdl.so.1 > > /usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1 > > > > ldd output for Project1 on Linux > > > > libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4001d000) > > libm.so.6 => /lib/libm.so.6 (0x400d1000) > > libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x400f4000) > > libc.so.6 => /lib/libc.so.6 (0x400fc000) > > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) > > > > > > g++ -v (on Solaris) > > Reading specs from > > /usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3/specs > > gcc version 2.95.3 20010315 (release) > > > > g++ -v (on Linux) > > Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/3.2.2/specs > > Configured with: > > ../gcc-3.2.2/configure --prefix=/usr --enable-shared --enable- > > threads=posix > > --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose -- > > target=i3 > > 86-slackware-linux > > --host=i386-slackware-linux > > Thread model: posix > > gcc version 3.2.2 > > > > g++ -v (on Windows) > > Reading specs from C:/mingw/bin/../lib/gcc-lib/mingw32/3.2/specs > > Configured with: > > ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host= > > mingw32 --target=mingw32 --prefix=/mingw --enable-threads > --disable-nls -- > > en > > able > > -languages=f77,c++,objc,ada --disable-win32-registry --disable-shared > > Thread model: win32 > > gcc version 3.2 (mingw special 20020817-1) > > > > using -fno-exceptions and -fno-rtti only saves about 1kb on the Win32 > EXE. > > > > > > Thanks, > > Devin Smith. > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > MinGW-users mailing list > > Min...@li... > > > > You may change your MinGW Account Options or unsubscribe at: > > https://lists.sourceforge.net/lists/listinfo/mingw-users > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > MinGW-users mailing list > > Min...@li... > > > > You may change your MinGW Account Options or unsubscribe at: > > https://lists.sourceforge.net/lists/listinfo/mingw-users > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users |