Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » "Schlankes" Kompilieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
07.07.2006, 13:52 Uhr
Yadgar



High!

Ich bin mir nicht sicher, ob meine Frage hierhin gehört... allerdings habe ich auch keine gesonderte Rubrik zum gcc gefunden!

Also: ich wundere mich schon seit längerem, dass mit der Standard-08/15-Befehlszeile


C++:
g++ <oder gcc> code.cpp -o programm


selbst triviale Zehnzeiler mehrere hundert KB lange Executables ergeben. Muss das heutzutage (wegen der Komplexität der Standardbibliothek oder von iostream) so sein, oder gibt es Möglichkeiten, den entstehenden Maschinencode radikal einzudampfen? Ich kann mir irgendwie nicht vorstellen, dass ein "Hallo Welt!"-Progrämmchen in Maschinencode länger als wenige Kilobyte sein muss...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.07.2006, 14:21 Uhr
xXx
Devil


hmm? tjo guck dir mal folgendes an: http://old.germangamedev.de/index.php?site=article&id=7
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.07.2006, 15:06 Uhr
Yadgar



High!


Zitat von xXx:

hmm? tjo guck dir mal folgendes an: http://old.germangamedev.de/index.php?site=article&id=7



Ouhauerha... für mich als Anfänger ist das alles ein bisschen sehr mächtig!

Jetzt habe ich es mal in oldschool C probiert... das Ergebnis war schon beeindruckend, das in C++ 475 235 Bytes lange Kompilat von "Hello, World" schnurrte auf ganze 15 908 Bytes zusammen! Aber abgesehen davon, dass ich in C++ und nicht in C programmieren will, kommt mir selbst das noch reichlich viel vor... wenn ich daran denke, dass (jetzt nicht auslachen!) zu C64-Zeiten ganze Spiele in 15 KB passten (o.k., das war ein Achtbitter, moderne PCs haben mindestens 32-Bit-Architektur, aber trotzdem sehe ich nicht ein, weshalb die Ausgabe von zwölf achtbittigen ASCII-Zeichen auf den Bildschirm einen solchen Riesenaufwand erfordern soll...)...

Wo kann ich denn (in übersichtlicher und auch dem Nicht-Nerd einleuchtender Weise) erfahren, wie der Sprachumfang von C++ (oder meinetwegen auch C) ohne alle Bibliotheken aussieht, damit ich mir mein eigenes cout basteln kann?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 07.07.2006 um 15:18 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.07.2006, 15:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
also bei mir liefert:


C++:
#include <iostream>

int main(void)
{
  std::cout << "Hello World!" << std::endl;
  return 0;
}



mit


Code:
g++ hw.cpp -o hw



ein

Code:

ls -l hw
... 6919 hw



also 7kb.

gcc ist 3.4.3

mit -O3 nur 5,9kb

jedoch mit -g (also debug-infos) schon gleich > 50kb.

zeig mal dein hello world, evtl sieht man da dran warum.

Das C-Programm davon (also printf statt iostream) liefert mit 4,5kb, egal welche optimierungsstufe, mit debuginfos nur 5,6kb
--
class God : public ChuckNorris { };

Dieser Post wurde am 07.07.2006 um 15:18 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.07.2006, 15:25 Uhr
Bruder Leif
dances with systems
(Operator)


Bei mir kommt für den gleichen Quellcode 8,5 bzw. 8,2 KiB raus. Nach dem strippen noch 4,0 bzw. 3,9 KiB.
Der Code

C++:
#include <stdio.h>

int main()
{
        printf("Hello World!\n");
        return 0;
}


produziert 6,8 KiB, gestrippt 2,9 KiB, egal ob O3 oder nicht...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.07.2006, 15:27 Uhr
Yadgar



[quote FloSoft]Hi,
also bei mir liefert:


C++:
#include <iostream>

int main(void)
{
  std::cout << "Hello World!" << std::endl;
  return 0;
}



mit


Code:
g++ hw.cpp -o hw



ein

Code:

ls -l hw
... 6919 hw



also 7kb.

Bei mir leider nicht: 494 990 Bytes, trotz weggelassenem "using namespace std"!

Hier der Code:


C++:
// Hello World!
// (AUPPERLE, Die Kunst der Programmierung mit C++, Braunschweig/Wiesbaden 2002, S. 21)

#include<iostream>

int main()
{
   std::cout << "Hallo, Welt!" << std::endl;
   return 0;
}



Liegt es vielleicht doch an den Compilereinstellungen? Mir fällt auf, dass ich mit meinem Dev-C++-gcc-System den gcc gar nicht direkt von der Konsole aus anschmeißen kann, das gibt dann immer einen Wust von Fehlermeldungen!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.07.2006, 15:36 Uhr
Bruder Leif
dances with systems
(Operator)


Kommt auch immer auf den Compiler an. Bei mir der gcc 4.0.3 unter Ubuntu 6.06, der Dev-C läuft unter Windows, oder?

Zum Thema C64 und Optimierung: Die guten alten Zeiten... Schau mal unter http://produkkt.abraxas-medien.de/demoscene. DAS ist beeindruckend!
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.07.2006, 15:54 Uhr
Yadgar




Zitat von Bruder Leif:
Kommt auch immer auf den Compiler an. Bei mir der gcc 4.0.3 unter Ubuntu 6.06, der Dev-C läuft unter Windows, oder?


Ja, und zwar in meinem konkreten Fall unter Windoof Server 2003!
Aber ich kann das Progrämmchen ja gleich mal zu Hause unter Linux (SuSe 9.2) durch den gcc nudeln... und parallel nochmal mit gcc unter <Nostalgiemodus>Windows 98</Nostalgiemodus>!

Zum Thema C64 und Optimierung: Die guten alten Zeiten... Schau mal unter http://produkkt.abraxas-medien.de/demoscene. DAS ist beeindruckend![/quote]

*Schluck!* Tja, wenn mir damals in den 80ern nicht das C64-Basic auf Jahre jegliche Lust am Programmieren vermiest hätte, wäre ich heute nicht nur erheblich weiter fortgeschritten, wahrscheinlich sähe auch mein Lebenslauf ganz anders aus, ich könnte mir als gefragter Code-Guru jedes Jahr eine Ariana-Düse ins reale Afghanistan (Frankfurt-Kabul, Business Class, oder mit KamAir: Düsseldorf-Kabul) leisten und müsste nicht vom "Khyberspace" rumspinnen... wobei sich allerdings die Frage stellt, ob fotorealistischer Echtzeit-Khyberspace auf die Dauer nicht doch teurer kommt als das Original!

By the way, ein sehr angenehmes Proggerforum hier! Der Umgangston erinnert mich an die PoV-Ray-Szene, ganz anders als bei den Schnöseln auf de.comp.lang.iso-c++, wo man regelmäßig von den Netcops zusammengestaucht wird, wenn man es wagt, Andeutungen in Richtung irgendwelcher compilerspezifischer Fragen zu machen...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.07.2006, 16:15 Uhr
(un)wissender
Niveauwart


Die Größe liegt einfach daran, dass die iostreams statisch hinzugelinkt werden. Mach das dynamisch und auch dein C++-Programm ist klein.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.07.2006, 23:37 Uhr
Yadgar



High!


Zitat von (un)wissender:
Die Größe liegt einfach daran, dass die iostreams statisch hinzugelinkt werden. Mach das dynamisch und auch dein C++-Programm ist klein.


Da bin ich wieder... dynamisch linken, das sieht nach einem Tiefseetauchgang durch die Manpages von g++ aus... ich ahnte schon, dass das heute eine lange Nacht wird!

Aber erstmal habe ich das Progrämmchen ganz traditionell unter Linux auf der Konsole mit g++ kompiliert... und zu meiner Überraschung wurde es nicht nur viel kleiner als mit gcc unter Windoof Server 2003, sondern sogar noch kleiner als die C-Version unter Windoof, nämlich ganze 14432 Bytes!

Verzicht auf Namespaces ändert übrigens daran nichts - also vermute ich mal, dass beim gcc im Dev-C++-Entwicklungspaket standardmäßig eine Option voreingestellt ist, die unter Linux deaktiviert ist...

In reinem C (als hallowelt.c kompiliert) wird es wiederum etwas kleiner, nämlich 12526 Bytes...

Bliebe jetzt also das Problem mit dem dynamischen Linken zu lösen... es kann sich nur noch um Tage handeln - da gibt es so unendlich viele gcc-Optionen, die ich im Moment durchprobiere...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: