Portál AbcLinuxu, 14. července 2025 21:49


Dotaz: Definice proměnných CFLAGS a CXXFLAGS

4.8.2005 17:05 Petr Tomeš | skóre: 23 | blog: ptomes | Brno
Definice proměnných CFLAGS a CXXFLAGS
Přečteno: 249×
Odpovědět | Admin
Dobrý den, jak nadefinovat proměnné pro následující sestavu? Předem děkuji za odpovědi.

Sestava: Gentoo 2005.0/1, Pentium III 900 MHz Celeron2 Coppermine, 128 MB RAM, Nvidia Riva TNT2 32 MB RAM, /boot (32 MB), / (9 GB), swap (1024 MB), KDE-base 3.4 + základní programy (Firefox, Amarok, KMail, K3B, MPlayer, KWord, KSpread...)

Podle http://gentoo-wiki.com/Safe_Cflags#Celeron_.28Coppermine.29_aka_Celeron2_.28Intel.29

doporučují použít:

CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"

Podle http://gentoo-wiki.com/CFLAGS#-O3 by: a) volba -O3 neměla být používána pro systém "s malým množstvím paměti a místa na disku", kde by mohla program zpomalit. Výstupní binární soubory prý budou větší, ale ne rychlejší. Bezpečná volba je prý -O2 "pro rychlý systém, který prostě funguje". b) volba -fomit-frame-pointer urychlí spouštění aplikací, ale zvětší velikost binárních souborů až o 30 %.

Přes Google jsem zjistil, že na podobných konfigurací lidé používají také následující CFLAGS: -fvisibility-inlines-hidden (CXXFLAG) - doporučený údajně pro uživatele KDE, který zmenší velikost knihoven nepotřebné znaky. -fforce-addr -fforce-mem -fprefetch-loop-arrays -ftracer -mfpmath=sse

Mám tedy obavy, zda jsou tyto volby vhodné pro daný počítač.
Petr Tomeš - Blog
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.8.2005 21:12 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
Odpovědět | | Sbalit | Link | Blokovat | Admin
volba -fomit-frame-pointer urychlí spouštění aplikací, ale zvětší velikost binárních souborů až o 30 %

Hm, a mohl by mi někdo vysvětlit, proč by zrovna tahle volba měla zvětšovat výsledné soubory, tím spíš proč o tolik?

4.8.2005 22:29 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
Mně ani není jasné, proč by měla urychlovat zrovna spouštění -- s relokacemi, resolvováním symbolů a pod. nemá nic společného. Prostě se na i386 u jednoduchých funkcí ušetří tak tři instrukce na funkci. To se může projevit při -O. Při -O2 bych už docela pochyboval, protože gcc krátké funkce automaticky inlinuje, takže moc těch, na které by to mělo znatelný efekt, asi nezbude.

Velikost kódu nemá cenu komentovat...
4.8.2005 21:39 jm
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
Odpovědět | | Sbalit | Link | Blokovat | Admin
 -fomit-frame-pointer

Enabled at levels -O, -O2, -O3, -Os.
Tak trochu redundantni, ne? :-)
4.8.2005 22:21 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
on machines where doing so does not interfere with debugging.

což zrovna i386 není. Pokud nevěříš, že to -O nezapíná, zkompiluj si main() + jednoduchou funkci, kterou volá se -save-temps a podívej se na assemblery, co se děje se zásobníkem...
8.10.2005 18:22 honzaP | skóre: 7 | blog: jan_pipek | Praha
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
Odpovědět | | Sbalit | Link | Blokovat | Admin

man gcc:

-O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging.

tak nevím... na machine AthlonXP to interferuje s debuggingem nebo ne? Tak či onak jsem to raději explicitně zapnul. Jaké další CFLAGS se hodí pro urychlení běhu programů (hlavně desktopových), když mě paměť ani velikost binárních souborů příliš netrápí?

8.10.2005 18:27 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
#3
8.10.2005 21:22 honzaP | skóre: 7 | blog: jan_pipek | Praha
Rozbalit Rozbalit vše Re: Definice proměnných CFLAGS a CXXFLAGS
nechci se hádat, ale mám pocit, že teprve v kombinaci s mojí odpovědí dává ta tvoje smysl :-) no nic, o to nejde, jaké ještě flagy používáš na urychlení?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.