webForumDet fria alternativet

.EXE filstorlek

10 svar · 917 visningar · startad av Danielkun

DanielkunMedlem sedan maj 2003361 inlägg
#1

Jag är ny på C++ och håller fortfarande på att komma igång.. en sak jag undrar över är filstorleken på .exe filer.

När jag kör en simpel kod som:

#include <iostream>

int main()
{
	std::cout << "Daniel!";
	
	return 0;
}

och kompilerar med Borlands bcc32 får jag en .exe fil på hela 110KB. Varför blir den så stor? Och vad skulle jag behöva göra för att få ner filstorleken?

tydalMedlem sedan juni 20034 013 inlägg
#2

Förmodligen är det debuginformation med. Jag har aldrig använt Borland, men i Microsofts kompilator väljer man att man vill göra en "Release".

DanielkunMedlem sedan maj 2003361 inlägg
#3

Tack, ska testa o ladda ner Visual C++ o testa

ToonsterMedlem sedan feb. 20001 590 inlägg
#4

Stämmer som Tydal skrev. Man kan göra ganska många inställningar för hur projektet ska kompileras. Bla. debug och release mm. men även statisk och dynamsik länkning mm. det borde varje fall gå att få ner den till ca 7k. Har c++ builder själv (tyvärr inte på denna datorn) men där är det enklare att göra dessa inställningar (i ett formulär), som du måste göra direkt i kommandoraden för bcc32.

Här finns allt du behöver veta...
http://csjava.occ.cccd.edu/~gilberts/bcc55.html

Sang-draxMedlem sedan juli 2002581 inlägg
#5

Det är inte alls säkert det är debubinformation med. Filstorlek är inget som dagens kompilatorer prioriterar.

LimeMedlem sedan sep. 2001961 inlägg
#6

Borde stämma. iostream-libbet som länkas in i exe-filen är 96 kb i Borland-versionen så 110 kb verkar vara ungefär lagom om övriga programmet har debugginfo.

Vad är problemet med att den är 110 kb?? Den kommer ändå att ta minst 640 kb när den laddas i primärminnet...

Sang-draxMedlem sedan juli 2002581 inlägg
#7

Det är inte säkert att det är debuginformation med. Filstorlek är verkligen inget dagens kompilatorer bryr sig om.

ToonsterMedlem sedan feb. 20001 590 inlägg
#8

I detta fallet med bcc32 så är debuginformationen med som standard. I andra kompilatorer möjligtvis annorlunda. Dessutom kan man i bcc32 optimera för filstorlek eller prestanda, processortyp osv. Återigen detta är för bcc32. Kolla gärna länken jag skickade. Där finns ett exempel med nästan identisk kod, som krymper från 112Kb till 7kb

LimeMedlem sedan sep. 2001961 inlägg
#9

Toonster skrev:

I detta fallet med bcc32 så är debuginformationen med som standard. I andra kompilatorer möjligtvis annorlunda. Dessutom kan man i bcc32 optimera för filstorlek eller prestanda, processortyp osv. Återigen detta är för bcc32. Kolla gärna länken jag skickade. Där finns ett exempel med nästan identisk kod, som krymper från 112Kb till 7kb

Det stämmer för alla kompilatorer som stödjer ANSI-C/C++. Specen säger att om kod kompileras med debug så ska hela XXXd.lib (debugvarianten av libbarna) föras in i den länkade koden. Orsaken till det är att det blir oerhört mycket enklare att hitta motsvarande bit källkod, i de fall den är tillgänglig.

Vid kompilering och länkning av icke debuggbar kod så får länkaren stycka upp libbet enligt vissa principer, lite baserat på vad som används och inte. Blir lite mindre då.

Läs specen, den ger oerhört mycket förståelse för varför vissa saker görs som de görs. (Sök på ISO/IEC 14882:2003 eller gå direkt på http://www.open-std.org/jtc1/sc22/wg21/)

DanielkunMedlem sedan maj 2003361 inlägg
#10

Toonster, tack för länken!
Den svarade på en hel del!

Det gör inget att filen tar upp 110kB, det jag inte riktigt förstog var varför ett sått sånt simpelt "program" krävde så stor filstorlek.

När man kollar på intro'n och demos så har man ju byggt in både grafik o ljud i filer som är mindre än 50kB. Hur kommer det sig att dom är så små? (Med tanke på innehållet)

lunaMedlem sedan juli 2004181 inlägg
#11

Danielkun skrev:

När man kollar på intro'n och demos så har man ju byggt in både grafik o ljud i filer som är mindre än 50kB. Hur kommer det sig att dom är så små? (Med tanke på innehållet)

Vanligtvis är de skrivna i assembler (inga onödiga operationer där inte) samt utnyttjar DirectX till ljud och bild. Många (bl.a. Farbrausch) packar sina demos utav bara h**vete :P.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)