webForumDet fria alternativet

.EXE filstorlek

C/C++ur C/C++

10 svar · 917 visningar · startad av Danielkun

Medlem sedan maj 2003361 inlägg
Frågan#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?

Medlem 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".

Medlem sedan maj 2003361 inlägg
#3

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

Medlem 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

Medlem sedan juli 2002581 inlägg
#5

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

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

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

Medlem 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

Medlem 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/)

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

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

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