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
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"?
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...
> 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.
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
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
Vielleicht indem Du unter "Project, Build Options, Compiler, Compiler Flags" den Haken bei "Produce debugging symbols [-g]" wegnimmst?
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
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
Ich verstehe dein Problem nicht. Hat dein PC nur 200k Festplatte frei?
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
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.
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
> 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.
> 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.
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
> 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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.