Forum: PC-Programmierung Zu großes Programm in C++


von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe ein Problem mit der größe des Programms was mir dieser Code 
erzeugt es hat satte 250kB.
#include <iostream>
int main()
{
  std::cout << "Ihre Festplatte wurde formatiert bitte heben Sie einen 
Magnet an ihre Festplatte um es rueckgaengig zu machen!\noder druecke 
Enter um die 2te moeglickeit zu erfahren!"<<std::endl;
  std::cin.get();
  std::cout << "lass dich nicht vergaeiern"<<std::endl;
  std::cin.get();
}

das ist doch nicht normal.... . Als IDE verwende ich Code::Blocks. Das 
Makefile habe ich im Anhang.
Was mache ich falsch?
MFG
Peter

von Gast (Gast)


Lesenswert?

Wenn dir 250kB zu groß ist, mußt du weniger komplexe Programme 
schreiben. Oder hast du mal zu Microsoft gesagt "Ich habe ein Problem 
mit der Größe von Windows, schicken Sie es mir bitte auf einer Floppy 
disc"?

von Peter (Gast)


Lesenswert?

hallo,
warum bekommen des dann andere mit 8kB hin?
mfg
peter

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Frag mal Theo, der kennt sich aus.

von Frank (Gast)


Lesenswert?

Das muss so groß sein. Der Compiler erkennt Schadsoftware und bläht das 
executable mit unnötigen, statisch gelinkten Bibliotheken auf. Dein 
erstes, echt gefährliches Programm dürfte auf 50 - 60 Mib kommen...

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

du mußt die standardbibliotheken rausnehmen

von Bartli (Gast)


Lesenswert?

> warum bekommen des dann andere mit 8kB hin?

Weil die wissen, was sie tun. Unter anderem lassen sie wahrscheinlich 
keine Debuginformationen im Programm und linken alles dynamisch.

von Marek S. (Gast)


Lesenswert?

Hallo Peter,

versuch dieses Programm doch mal bitte in C-Syntax mit Printf und getch 
zu schreiben.

du brauchst die header-dateien  stdio und conio.

Poste dann mal bitte die größe des files.

Gruß

Marek

von Peter (Gast)


Lesenswert?

Hallo,
@Bartli kannst du das mal genauer erläutern wie ich die debuginfos mit 
Codeblock rausbekomme? BUILD = relase geht irgenwie net oder ich trage 
es falsch ein. Kann mir jemand sagen wo ich des eintragen kann bei 
CODE.Blocks? Und Dymnamisches Linken ist für mich noch ein Fremdwort 
werde mich heute abend mal schlau machen. Weiß auch hier jemand wie das 
über Code:Blocks geht?
@marek:
das werde ich heute abend mal versuchen.
mfg
peter

von StinkyWinky (Gast)


Lesenswert?

Vielleicht indem Du unter

"Project, Build Options, Compiler, Compiler Flags" den Haken bei 
"Produce debugging symbols [-g]"

wegnimmst?

von Peter (Gast)


Lesenswert?

hi,
danke für den tip aber des ist schon weg.
mfg
peter

von KoF (Gast)


Lesenswert?

hmm..
ich als cmd-fan (antimausschubsli) würde gir ein gcc-strip <prog> 
verschreiben ;-)
wie das in codeblock aussieht bzw wo welcher häckchen zu setzten ist.. 
keine ahnung

von Peter (Gast)


Lesenswert?

Hallo,
@marek ich habe es mal mit Printf probiert ohne irgendwelchen anderen 
balast probiert. Die von dir angegebenen Libs wurden leichter nicht 
gefunden. mit der Standertlib iostream hat es dann gefunzt allerdings 
auch 250k.
@KoF kannst du bitte mal so ein scribt posten um evt auszuschließen das 
es irgenwie am Windoof liegt. Vieleicht schaffe ich es ja mit der IDE zu 
verheiraten.
danke schonmal für eure bemühungen.
MFG
Peter

von Rolf Magnus (Gast)


Lesenswert?

Ich verstehe dein Problem nicht. Hat dein PC nur 200k Festplatte frei?

von hui bui (Gast)


Lesenswert?

Versuch doch ne andere Programmiersprache, z.B. C oder pureBasic - ich 
versteh nicht, warum Du Dich auf C++ versteifst?! Weil da jeder mit 
rumprogrammiert oder berufliche Vorgabe?
Jeder Sprache hat Ihren Sinn - und wenn man herumdoktoren muß, sollte 
man mal über andere Wege nachdenken

von Gast (Gast)


Lesenswert?

Peter, sieh's einfach positiv:

Wenn du deinem Programm weitere zwei solche Aus- und Eingaben 
hinzufügst, wird es sich um vielleicht 200 Byte vergrößern, also 
doppelte Funktion bei weniger als 1 Promille mehr Code.

Wenn ich dein Programm compiliere und vier Zeilen hinzufüge, verdoppelt 
sich die Größe des Programms fast. Da kommst du doch eindeutig besser 
bei weg.

von Peter (Gast)


Lesenswert?

Hallo,
@hui bui Ich denke einfach das C++ vieleicht nicht einfach zu lernen ist 
aber es durchaus eine breite Community und freie Compiler gibt. Und für 
mich ist die ünterstüzung einer Programiersprache schon wichtig. Ich 
denke mal jede Programmiersprache hat ihre Vor- und auch Nachteile. Ich 
habe vor µC mit C geproggt und ich wollte mir mal eine Objektorientierte 
Sprachw anschauen und zudem arbeiten wir damit auch in der Schule oder 
sollten es zumindestens... (Über das zusammenklicken von Fenstern kamen 
wir in einen halben Jahr noch nicht ( auch keine Grundlagen ich weiß das 
man sowas net in nen 1/2 Jahr lernt) .
@Rolf Magnus
Bis jetzt soll ist es noch kein Problem aber was wenn die Programme mal 
etwas größer werden? brauche ich dann die ganze Festplatte(160GB) für 
ein Prog?
@Gast
wie meinst du es wenn du es bei dir Compilerst? meinst du das ganze 
relativiert sich mit der größe des Programms? Sprich wenn ich mal 1k 
Zeilen habe habe ich vieleicht nur 300k? Wenn dies jemand bestätigen 
könnte wäre das ja noch in Ordnung.... .
MFG
Peter

von Rolf Magnus (Gast)


Lesenswert?

> Bis jetzt soll ist es noch kein Problem aber was wenn die Programme mal
> etwas größer werden?

In dieser Datei ist vermutlich ein gewisser Overhead drin, der nicht 
oder kaum von der Größe deines eigentlichen Code abhängt. Viele Anfänger 
machen den Fehler, ein kleines, in der Praxis eigentlich nutzloses 
Programm zu schreiben und von diesem auf richtige Programme zu 
schließen. Das funktioniert so aber nicht. Du solltest dir deshalb 
erstmal keine Sorgen wegen der Größe der ausführbaren Datei machen.
Übrigens: Ich nehme an, daß das Programm statisch gelinkt und deshalb so 
groß ist.

von Thomas (Gast)


Lesenswert?

> Bis jetzt soll ist es noch kein Problem aber was wenn die Programme mal
> etwas größer werden? brauche ich dann die ganze Festplatte(160GB) für
> ein Prog?

Da mach dir mal nicht ins Höschen. Die Größe der ausführbaren Datei geht 
alles andere als linear mit der Anzahl der Quelltextzeilen. Guck dir mal 
komplexe Programme an, Officelösungen oder DTP oder so. Die ausführbaren 
Dateien liegen da vielleicht im zweistelligen MB-Bereich, zuzüglich DLLs 
etc. kommt man da auf nur wenige GB. Das sind aber auch Projekte mit 
Millionen Zeilen Quelltext und zigtausenden Mannstunden.

Worauf die meisten mir ihren Posts hier schon hinauswollten ist die 
Tatsache, dass die gelinkten Bibliotheken, wie z. B. iostream, Platz 
verbrauchen, dann aber nicht jeder Aufruf wieder enormen Speicher 
kostet.

von Thorsten E. (eggert)


Lesenswert?

Hallo,
ich denke das dieser Overhead von der C++ Laufzeitumgebung kommt. Die 
wird bei C++ binaries soweit ich weiss immer hinzugelinkt. Allerdings 
ist dieser Overhead vermutlich bei jedem Programm gleich, unabhangig von 
der Größe des Programms, also bei deinem Compiler vermutlich ca. 250kb, 
wenn ich deinen reichhaltigen eigenen Code mal ignoriren darf (-:.

Gruß

          Thorsten

von Bartli (Gast)


Lesenswert?

> ich denke das dieser Overhead von der C++ Laufzeitumgebung kommt. Die
> wird bei C++ binaries soweit ich weiss immer hinzugelinkt.

Zumindest beim MinGW kann man unter Umstaenden tatsaechlich nicht viel 
machen.

Weitere Vorschlaege:
1. Ausprobieren, was Marek geschrieben hat
2. Assembler nehmen, DOS Programm mit gewuenschter Funktionalitaet 
schreiben (COM, nicht EXE, EXEs haben einen Header, und der ist 
mindestens 32 Bytes gross, und die meisten Linker machen ihn sowieso nur 
512 Bytes oder groesser).

von Marek S. (Gast)


Lesenswert?

Hallo,
da bin ich wieder.
Also ich habe dass Programm mit dem BCB 6.0 mal compiliert.
Ich komme auf 10,5 KB Größe.

Ob dies(250 KB) normal ist für deinen Compiler oder nicht, kann ich 
nicht sagen.
Ich würde den Compiler nicht aus diesem Grund wechseln.

Gruß

Marek

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.