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
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
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