Seite 1 von 2

C++ Dateigröße immer > 6 kBytes

Verfasst: 10.02.2007 21:03
von DarkDragon
Hallo,

Va!n und ich haben uns grad gewundert warum wir die EXE mit MingW nicht unter 6 kBytes bekommen. Wir haben Debugger aus, Optimierungen voll an und es will einfach nicht unter 6 kB gehen. Wir nutzen Code::Blocks und Dev-Cpp als Entwicklungsumgebung.

Weiß jemand da mehr darüber? Wenn ich bei Google suche finde ich meist MSVC Schrott, was man überhaupt nicht auf MingW anwenden kann.

[EDIT]

Ganz vergessen:

Code: Alles auswählen

#include <windows.h>
#include <GL/gl.h>

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{
    PIXELFORMATDESCRIPTOR pfd;
    pfd.cColorBits = pfd.cDepthBits = 32;
    pfd.dwFlags    = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;

    HDC hDC = GetDC ( CreateWindow("edit", 0,
                                   WS_POPUP|WS_VISIBLE|WS_MAXIMIZE,
                                   0, 0, 0 , 0, 0, 0, 0, 0) );

    SetPixelFormat ( hDC, ChoosePixelFormat ( hDC, &pfd) , &pfd );
    wglMakeCurrent ( hDC, wglCreateContext(hDC) );

    ShowCursor(FALSE);

    do {

        glClear ( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT );

        SwapBuffers ( hDC );
    } while ( !GetAsyncKeyState(VK_ESCAPE) );


    ExitProcess(0);

    return 0;
}

Verfasst: 10.02.2007 21:04
von 125
Wie sieht denn der Source aus?

Verfasst: 10.02.2007 21:06
von DarkDragon
125 hat geschrieben:Wie sieht denn der Source aus?
Hab mich oben nochmal korrigiert, danke für den Hinweis.

[EDIT]
Es gibt OpenGL Demos, die sind weitaus kleiner als 6 kB ungepackt. :freak:

Verfasst: 10.02.2007 21:19
von MVXA
Eine Exe hat für gewöhnlich diverse Informationen noch mit drine. Es gibt
halt dann Linker, die alle direkt zusammen in einen Block werfen und es
gibt halt auch Linker, die zwischen den einzelnen Blöcken etwas Platz
lassen. Denke ich mir mal :roll:, da die Strukturen ja alle mit Offsets
arbeiten....

Verfasst: 10.02.2007 21:21
von Vallan
Das liegt an den Includes. Wenn du alle includes die du nicht brauchst rausstreichst dann sollte das wesentlich kleiner werden.

(Glaube ich)

Verfasst: 11.02.2007 02:02
von 125
Vallan hat geschrieben:Das liegt an den Includes. Wenn du alle includes die du nicht brauchst rausstreichst dann sollte das wesentlich kleiner werden.

(Glaube ich)
Die beiden Header die er includet braucht er...

Verfasst: 11.02.2007 10:44
von DarkDragon
125 hat geschrieben:
Vallan hat geschrieben:Das liegt an den Includes. Wenn du alle includes die du nicht brauchst rausstreichst dann sollte das wesentlich kleiner werden.

(Glaube ich)
Die beiden Header die er includet braucht er...
Und wenn ich die raus mach sinds immernoch 5,5 kB. 1-2kB Anwendungen sind ja auch möglich. Sogar mit OpenGL Funktionen.

@MVXA: Nur wie bekommt mans dann kleiner? :freak: Anderen Linker verwenden oder wie? UPX bringt ja auch alles auf ne ziemlich kompakte größe, ich würd aber gern ohne UPX schon so kleine Dateien haben (Bei PB gehts doch auch?).

Verfasst: 11.02.2007 12:37
von Thorium
DarkDragon hat geschrieben: Nur wie bekommt mans dann kleiner? :freak: Anderen Linker verwenden oder wie? UPX bringt ja auch alles auf ne ziemlich kompakte größe, ich würd aber gern ohne UPX schon so kleine Dateien haben (Bei PB gehts doch auch?).
Also das Minimum von PB sind 2 KB, da ist dann aber auch wirklich garnix drinnen. Bei den meisten Demos, die so kleine exe'en haben wurde am PE-Format rumgedocktort. Schau mal hier. Wenn man die Formatspezifikationen kennt lässt sich die Dateigröße enorm optimieren. Allerdings muss man sich da erstmal reinarbeiten.

Verfasst: 11.02.2007 13:17
von DarkDragon
Thorium hat geschrieben:
DarkDragon hat geschrieben: Nur wie bekommt mans dann kleiner? :freak: Anderen Linker verwenden oder wie? UPX bringt ja auch alles auf ne ziemlich kompakte größe, ich würd aber gern ohne UPX schon so kleine Dateien haben (Bei PB gehts doch auch?).
Also das Minimum von PB sind 2 KB, da ist dann aber auch wirklich garnix drinnen. Bei den meisten Demos, die so kleine exe'en haben wurde am PE-Format rumgedocktort. Schau mal hier. Wenn man die Formatspezifikationen kennt lässt sich die Dateigröße enorm optimieren. Allerdings muss man sich da erstmal reinarbeiten.
Danke für den Tipp :-) . Aber viele Leute behaupten man könne auch ohne "rumdoktorn" mit C++ unter 5 kB kommen.

Verfasst: 11.02.2007 14:28
von Eric
Falls du es nicht schon machst, könntest du die Optimierung auf -Os stellen (optimiert auf Größe).
Und beim Linker kannst du noch -s angeben (entfernt einige überflüssige Sachen beim Linken)
oder alternativ die Strip.exe von MinGW benutzen. (sollte aufs gleiche hinauslaufen.)