Article View: de.comp.lang.c++
Article #134Re: Hello World - warum so gross?
From: Ullrich von Bassewitz
Date: Mon, 14 Aug 1995 10:10
Date: Mon, 14 Aug 1995 10:10
44 lines
2437 bytes
2437 bytes
Joerg Pleumann (sa021pl@unidui.uni-duisburg.de) wrote: > Wie kommen diese Code-Groessen zustande? Ist das etwa normal fuer C? Dann > kann ich ja gleich in Visual Basic programmieren und immer eine 5 MB DLL > zu meinen Programmen dazugeben. Oder verhaelt sich nur GNU C so? Oder mache > ich irgendwas falsch, gibt's da einen Parameter -SMALLEXE, den ich noch > nicht entdeckt habe? :-) C bzw. der dafuer verwendete, "normale" Linker ist nicht besonders gut im aussortieren von Code der nicht benoetigt wird. Wenn der Linker eine Referenz in ein Object File findet, dann wird der gesamte Inhalt des Object Files zum Executable hinzugelinkt, ohne weitere Pruefungen, ob vielleicht nur eine der drei darin enthaltenen Funktionen benoetigt wird. Der Effekt gibt sich etwas mit groesseren Programmen, da dann die Wahrschein- lichkeit gross ist, dass Du mehr als eine Routine aus einem Object File tatsaechlich nutzt. D.h. die Executables werden nicht in demselben Masse groesser wie Deine Quellen. Was noch dazu kommt ist, dass GNU-C im Vergleich zu anderen Compilern recht umfangreichen (aber auch schnellen) Code erzeugt. Damit Du Dir vorstellen kannst, in welchem Umfang sich die Compiler hier unterscheiden mal die Groesse ein und desselben Programms auf den unterschiedlichen Plattformen: Linux (Compiler: gcc) 484356 OS/2 (Compiler: Watcom) 308352 DOS (Compiler: Watcom) 372940 Alle Programme sind statisch gelinkt und entstehen bis auf ein paar Routinen zum Bildschirm/Tastatur I/O aus denselben Sourcen. Inwiefern die Groesse vom Format des Executables abhaengt (DOS: EXE, OS/2: LX, Linux: a.out) ist mir nicht klar, ich denke aber, dass sich die grossen Unterschiede dadurch nicht erklaeren lassen. Wahrscheinlich musst Du mit dem Speicherbedarf einfach leben (vielleicht noch etwas RAM nachstecken). Gruss Uz -- Ullrich von Bassewitz uz@ibb.schwaben.com
Technical Details
Message-ID:
<DDApM3.7ou@wuschel.ibb.schwaben.com>Path:
arc1-ca.pugleaf.net!wuschel.ibb.schwaben.com!uzReferences:
<YrjLwYkkusiW084yn@unidui.uni-duisburg.de>Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++,de.comp.lang.c Path: arc1-ca.pugleaf.net!wuschel.ibb.schwaben.com!uz From: uz@wuschel.ibb.schwaben.com (Ullrich von Bassewitz) Subject: Re: Hello World - warum so gross? Followup-To: de.comp.lang.c++,de.comp.lang.c X-Newsreader: TIN [version 1.2 PL2] Reply-To: uz@ibb.schwaben.com Organization: Ingenieurbuero von Bassewitz Message-ID: <DDApM3.7ou@wuschel.ibb.schwaben.com> References: <YrjLwYkkusiW084yn@unidui.uni-duisburg.de> Date: Mon, 14 Aug 1995 10:10:50 GMT