Thomas Hruska a écrit :
> Brett W. McCoy wrote:
>   
>> On 1/29/07, Nuno Berneaud <[EMAIL PROTECTED]> wrote:
>>
>>     
>>>> BTW, found this in Bjarne's C++ FAQ:
>>>> Why is the code generated for the "Hello world" program ten times
>>>> larger for C++ than for C?
>>>> It isn't on my machine, and it shouldn't be on yours. I have even
>>>> seen the C++ version of the "hello world" program smaller than the C
>>>> version. When I recently (2004) tested using gcc -o2 on a Unix, the
>>>> two versions (iostreams and stdio) yielded identical sizes. There is
>>>> no language reason why the one version should be larger than the
>>>> other. It is all an issue on how the implementor organized the
>>>> libraries. If one version is significantly larger than the other,
>>>> report the problem to the implementor of the larger.
>>>>         
>>> I've tried the Bjarne's "hello world" example, too, and was surprised to 
>>> see the
>>> executable was almost 4MB! 5 lines of code, a couple includes, isn't it a 
>>> bit
>>> too much?
>>>       
>> 4MB?!??!?!?! What compiler?
>>
>> I just tried with CygWin, using -o2 with gcc 3.4.4 and got:
>>
>> $ ls -l hello*
>> -rwxrwxrwx 1 Bones None   86 Jan 29 20:26 hello_c.c*
>> -rwxr-xr-x 1 Bones None 8.7K Jan 29 20:29 hello_c.exe*
>> -rwxrwxrwx 1 Bones None  113 Jan 29 20:31 hello_cpp.cpp*
>> -rwxr-xr-x 1 Bones None 466K Jan 29 20:32 hello_cpp.exe*
>>
>> But on Linux, using gcc 3.3.6, I got
>>
>> [EMAIL PROTECTED] ~ $ ls -l hello*
>> -rwxr-xr-x 1 bmccoy users 6083 Jan 30 01:48 hello_c
>> -rwxr-xr-x 1 bmccoy users   86 Jan 30 01:48 hello_c.c
>> -rwxr-xr-x 1 bmccoy users 7834 Jan 30 01:48 hello_cpp
>> -rwxr-xr-x 1 bmccoy users  113 Jan 30 01:48 hello_cpp.cpp
>>
>> Why does CygWin produce such a large C++ binaries?
>>
>> -- Brett
>>     
>
> Brett, have you taken the EXE apart?  Any number of things could be 
> happening:  Static linking, massive (and unnecessary) string and numeric 
> mapping tables getting compiled in and not removed even though the 
> functions using those tables are never used, symbol table inclusion, 
> etc.  You'd have to analyze the file with PE tools (tools that take 
> apart PE files) to figure out what's being included that is causing the 
> size difference.  Also, PE files are probably naturally larger than the 
> ELF equivalent (you can store a lot of junk in an EXE such as bitmap 
> resources).
>
>   
The easy way to reduce a little bit is to strip the exe (-s)
and -Os may help but not much.
I have got  277ko for gcc under cygwin and 72Ko under VC++ (Release)

But this over-size come from the C++ Standard libs that come natively 
(dynamicly link) for VC++
and gcc use is own staticly link (gcc generate bigger exe too)


David

Reply via email to