Citat:
Ivan Dimkovic: Nisu sve optimizacije "besplatne" - recimo, neke optimizacije za brzinu imaju za cenu veci masinski kod (sto rezultuje vecim izvrsnim fajlom ili bibliotekom) isto kao sto neke optimizacije za velicinu koda imaju los efekat na brzinu. Zbog toga postoje opcije koje to kontrolisu.
U najvecem broju slucajeva -O2 radi posao, ako ti je brzina kljucna stvar i briga te za velicinu fajla koristi -O3
S tim da je danas malo koga briga za veličinu fajla (osim možda u nekim jako specifičnim slučajevima). Glavni "negativan efekat" optimizacije je vreme kompajliranja. Takođe, kada se pravi debug verzija programa, sve optimizacije se isključuju da bi program radio "po Vuku" - onako kako je napisano, ne bi li čovek lakše uvideo grešku u onome što je napisano.
A sve opcije GNU kompajlera ovde
http://linux.die.net/man/1/gcc
To što je Ivan napisao je pod "Optimization options", ali te možda mogu zanimati i druge opcije. Recimo, neke od najčešće korišćenih su
-oname (daje navedeno ime izlaznom fajlu, ako ne želiš da ti se program zove a.out)
-c (prevedi bez linkovanja. Tako se prevodi svaka jedinica za prevođenje, a tek na kraju sve linkuje)
-llibrary (uključi datu biblioteku),
-Idirectory (uključi navedeni direktorijum u include pretragu)
-Ldirectory (uključi navedeni direktorijum u pretragu biblioteka)
-g uključi debug informacije (neophodne za rad dibagera)
-glevel (gde je level broj od 0 do 3, koji kaže koliko debug informacija da se uključi, 0 za ništa, 3 za skoro sve ili sve)
-fPIC -shared (u kombinaciji za pravljenje deljenih biblioteka, tj. biblioteka za dinamičko linkovanje - pod Linux-om .so,a pod Windows-om (koji valjda ne tražin -fPIC) .dll).
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.