From: Keith M. <kei...@to...> - 2006-03-08 16:32:27
|
Steve Blinkhorn wrote: > But the NetBSD-generated versions seem to have an additional > 170 Kbytes of overhead in the .exe, which isn't much these days I > suppose, but when the BSD/OS-generated version is 45 Kbytes and > the NetBSD-generated version is 220 Kbytes it's slightly > jaw-dropping. > > Has there been a general upwards creep in executable code size > that I just haven't noticed before? I'm not sure that I fully understand your question, but I think you are comparing code sizes for Win32 executables, cross compiled using MinGW cross-compilers on two different host platforms. Are the versions of the two MinGW cross-compilers the same in each case? Are you stripping the generated code? (I don't see switches to strip, in your examples, but then I don't see the -g to include debug information either). I recently installed i586-mingw32-gcc on my GNU/Linux box, following the procedure described here: http://www.mingw.org/MinGWiki/index.php/build%20a%20Win32%20x-compiler%20for%20Linux Compiling a trivial "Hello World!" app using this cross-compiler, with `-g -O2', and comparing results with identically compiled code from the native MinGW gcc on Win32 gave this: $ ls -lh hello.exe /usbdisk/hello.exe -rwxr-xr-x 1 rgbl0264 544 939k Mar 8 16:12 /usbdisk/hello.exe -rwxr-xr-x 1 rgbl0264 544 17k Mar 8 16:12 hello.exe (The image on the usbdisk is the cross-compiled variant). After stripping, I see a much more reasonable comparison: $ ls -lh hello.exe /usbdisk/hello.exe -rwxr-xr-x 1 rgbl0264 544 5.5k Mar 8 16:17 /usbdisk/hello.exe -rwxr-xr-x 1 rgbl0264 544 5.0k Mar 8 16:17 hello.exe In this case, the cross-compiled variant is still slightly larger than the native, but the cross-compiler is a slightly newer version of GCC than the native, which may explain the residual discrepancy. (Native compiler: $ gcc --version gcc.exe (GCC) 3.2.3 (mingw special 20030504-1) I think the cross-compiler is 3.4.x, but I'm not able to check right now). I've no idea why the unstripped code from the cross-compiler is so much more bloated than the natively compiled code. Regards, Keith. |