Page 1 of 16

CFLAGS/CXXFLAGS

Posted: Wed Feb 04, 2004 10:07 am
by C1REX
Mało pytań, węc coś napisać trzeba. Wiem, ze na tym forum jest coś takiego, ale ja pytam Polaków.
IMO: Bo są mądrzejsi.

Na dobry początek podaję swoje:

Code: Select all

CFLAGS="-O2 -march=athlon-tbird -mcpu=athlon-tbird -pipe -fomit-frame-pointer -funroll-all-loops -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"

CXXFLAGS="-O2 -march=athlon-tbird -mcpu=athlon-tbird -pipe -ffast-math -fomit-frame-pointer -funroll-all-loops -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"

USE="3dnow mmx -docs -cups"

LINGUAS="pl"

ACCEPT_KEYWORDS="~x86"
Część softu kompiluję z innymi flagami.

Mam nadzieję, że forum się rozkręci.

Pozdrawiam.

Posted: Wed Feb 04, 2004 12:06 pm
by Daemon42
Ok, po kolei - na temat flag:
http://lubuska.zapto.org/~hoppke/too_mu ... pilat.html - tutaj znajdziesz wyjaśnienie kolejnych flag i wytłumaczenie dlaczego należy ich używać. Właściwie, to pozostaje tylko wybór poziomu optymalizacji i tak:

-O2 jak narazie najbezpieczniejsza optymalizacja, binarki średniej wielkości, optymalizacja też srednia, ale kod się w żaden sposób nie rozrasta

-Os teoretycznie powinien być tak samo dobry jak -O2 tylko, że procedury zmniejszające objętość binarek (w rzeczywistości, może być słaba optymalizacja i 2-3 razy większa binarka)

-O3 teoretycznie powinno dawać najlepszą optymalizację - w praktyce częściej to oznacza znacznie dłuższą kompilację, rozrośniete binarki i (nie zawsze) słabo zoptymalizowany kod.

To jest kwestia gustu.

Flagi USE to jest kwestia indywidualna każdego użytkownika. Jako, że ja np. lubie QT, to ustawiam sobie QT, poza tym wolę GTK2 od GTK, co też mam w flagach ustawione. Polecam użyć ufed'a (dostępny w portage do przejrzenia) - czasami brak jakiejś USE-flagi może spowodować błędy w kompilacji. Wszystko wedle wyboru.

LINGUAS? Nie wiem, ja używam LC_ALL="pl_PL", słyszałem, że najbardziej skuteczne.

ACCEPT_KEYWORDS=~x86 może Ci dać niestabilny system. Ale jeśli jest to rozwiązanie desktopowe to ACCEPT_KEYWORDS nie jest złym pomysłem.

Posted: Wed Feb 04, 2004 2:44 pm
by btower
CFLAGS="-mcpu=athlon-xp -march=athlon-xp -O2 -pipe -DNDEBUG -DG_DISABLE_ASSERT -s"

CXXFLAGS="-march=athlon-xp -mcpu=athlon-xp -O2 -pipe -DNDEBUG -DG_DISABLE_ASSERT -s"

COMPILER="gcc3"

Posted: Wed Feb 04, 2004 2:50 pm
by arab79
athlon xp:

CFLAGS="-O3 -mcpu=athlon-xp -march=athlon-xp -pipe -falign-functions=4 -falign-jumps -falign-loops -fmove-all-movables -fprefetch-loop-arrays -funroll-loops -frerun-loop-opt -ffast-math -mmmx -m3dnow -msse"

--
swojego czasu lecialem na -O2 z tym samym zestawem flag ale mi sie znudzilo.

generalnie wszystko bryka

co do USE... blah.. temat rzeka...

Posted: Wed Feb 04, 2004 2:54 pm
by btower
Po co macie takie opcje jak: -mmmx -m3dnow -msse?
Myslalem ze okreslenie typu procesora jednoznacznie dodaje wszystkie dostępne optymalizacje.

Moze ktoś zapoda fragment z $ man gcc który by potwierdzał to co powiedziałem powyzej bo sam juz nie jestem pewien.

Posted: Wed Feb 04, 2004 2:57 pm
by arab79
btower wrote:Po co macie takie opcje jak: -mmmx -m3dnow -msse?
Myslalem ze okreslenie typu procesora jednoznacznie dodaje wszystkie dostępne optymalizacje.
hmm.. nie wiem, ja tak na wszelki wypadek te 3 akurat :)

Posted: Wed Feb 04, 2004 3:24 pm
by C1REX
Dokladnie tak - skoro nie moze zaszkodzic, to moze byc jedynie dla swietego spokoju.

Posted: Thu Feb 05, 2004 11:44 am
by grzewho
CFLAGS="-march=pentium3 -mcpu=pentium3 -mmmx -msse -O3 -pipe -fomit-frame-pointe
r -fforce-addr -s -DNDEBUG -DG_DISSABLE_ASSERT -mfpmath=sse,387 -ffast-math"

procesor to:

g@hal g $ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Celeron (Coppermine)
stepping : 6
cpu MHz : 717.590
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips : 1417.21

Posted: Thu Feb 05, 2004 12:00 pm
by Gohan_
CFLAGS="-march=athlon-xp -m3dnow -msse -mfpmath=sse -mmmx -O3 -pipe -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -maccumulate-outgoing-args"
CXXFLAGS="${CFLAGS}"

Te flagi mam dopiero 2 dni ale zrobilem na nich glibc i gcc bez problemu :)
PS. moze to komus pomoze http://www.freehackers.org/gentoo/gccfl ... _gcc3.html

Posted: Thu Feb 05, 2004 7:00 pm
by no4b

Code: Select all

CFLAGS="-Os -march=athlon -mcpu=athlon -pipe -fomit-frame-pointer -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"
Duron 800 mhz.

Posted: Thu Feb 05, 2004 7:41 pm
by Yarecki
CFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer -mmmx -m3dnow -msse -s"

Posted: Thu Feb 05, 2004 11:50 pm
by Jabbas
Daemon42 wrote:Ok, po kolei - na temat flag:
LINGUAS? Nie wiem, ja używam LC_ALL="pl_PL", słyszałem, że najbardziej skuteczne.
LINGUAS używane jest (o ile moja pamięć mnie nie zawodzi) przy koffice albo kde-i18n...

Posted: Sun Feb 08, 2004 2:26 pm
by C1REX
Ja podam link do jednego tematu z jednego z najlepszych for linuksowych w Polsce.
http://linuxweb.cyb3r.org/viewtopic.php ... algi#24317

Jak niektórzy zauważyli Os nie jest takie wspaniałe, na jakie wskazywałyby niektóre opisy. Co więcej, ta flaga bardzo źle reauguje z -fomit-frame-pointer.

Dzięki takim osobom jak pluto mój gentoo jest coraz lepszy.

Pozdrawiam

Posted: Sun Feb 08, 2004 5:01 pm
by no4b
Ja mam -Os i -fomit-frame-pointer, -fomit-frame-pointer nie jest zalecane dla aplikacji w c++, bo moze rozdmuchiwac kod i ogolnie zle kompilowac. Czesto sypaly mi sie, albo nie wlaczaly wogole (segfalout) programy w c++ zkompilowane z -fomit... natomiast przy programach napisanych w c nie mam problemow.

Posted: Sun Feb 08, 2004 7:04 pm
by C1REX
Czytałem, że -fomit... rozdmuchuje jedynie kod w kombinacji z Os. czytałem również, że -fomit... sporo daje w c++ o ile wie się, których programów nie powinno się komppilować z tą flagą.

Mógłby ktoś odnieść się to tego info? Większość wyczytałem na http://linuxweb.cyb3r.org

Posted: Fri Feb 20, 2004 9:57 am
by C1REX
Jakby kogoś interesowało to podaję link do tematu

http://forums.gentoo.org/viewtopic.php?t=5717

W nowym stage'u domyślnie jest ustawione O2, fomit-frame-pointer i pipe

Posted: Sat Feb 21, 2004 8:40 pm
by C1REX
Nudziło mi się i sobie nowe flagi zawiesiłem

Duron800

CFLAGS="-O2 -march=athlon-tbird -mcpu=athlon-tbird -pipe -fomit-frame-pointer -ffast-math -funroll-all-loops -frename-registers -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"

Posted: Sat Feb 21, 2004 10:52 pm
by krzysz
-mmmx -m3dnow nie jest włączane domyślnie gdy podasz march=athlon-tbird ?

Posted: Sun Feb 22, 2004 12:34 am
by C1REX
powinne być, ale różnie w kompilacji bywa. Daję je głównie dla świętego spokoju.

(gdzieś wyczytałem, że jednak te flagi są czasami pomijane i trzeba je dopisać do make.conf)

Posted: Sun Feb 22, 2004 7:58 pm
by C1REX
Czy te same flagi będa działać w LFS?
Gdzieś wyczytałem, ze w ebuild-ach są ustawione pewne flagi i te z make.conf nie zawsze są uwzględniane.

Wie ktoś coś na ten temat?

Posted: Tue Feb 24, 2004 10:42 am
by fallow
wydaje mi sie ( hehe) :) , ze

specyfikacja flag jest zalezna tylko od posiadanej wersji gcc

no a co do ustawienia flag w ebuildach , no to wlasnie mnie to zaciekowilo .
sam jak cos emerguje to widze, ze nie zawsze sa brane pod uwage te flagi ktore ja mam ustawione , tylko inne...

przegladaem troche ebuildow ale nie znalazlem w nich zadnych ustawien flag ( moe kurde za malo szukalem) ? ;)

wiec skad sie biore zmiany w ustawien flag , przy emergowaniu ?

moze ktros cos wie : ) ?, a jesli to jest ustawiane w ebuildach , to jak : ) ?

Posted: Tue Feb 24, 2004 11:51 am
by btower
fallow wrote:
wiec skad sie biore zmiany w ustawien flag , przy emergowaniu ?

moze ktros cos wie : ) ?, a jesli to jest ustawiane w ebuildach , to jak : ) ?
Nie domyślasz się dlaczego flagi są zmieniane w ebuildach?
To chyba oczywiste że po abyś nie ustawił zbyt agresywnych flag i potem dziwił się dlaczego pakiet się nie merguje lub działa ale się wywraca.
Czasami takie jest zalecenie tworców oprogramowania, czasami bugi w samych programach lub niedopracowane opcje w gcc. Duzo pisze w samych ebuildach, zagladales?

Posted: Tue Feb 24, 2004 12:15 pm
by fallow
hehe :) po co sie tak unosic , lepiej zapasy adrenaliny spozytkuj na cos innego ;)

, nie musisz mi wyjasniac po co sie zmienia flagi , to chyba oczywiste , jak i oczywiste jest to po co ja zmienilem swoje w make.conf
moze ktros cos wie : ) ?, a jesli to jest ustawiane w ebuildach , to jak : ) ?
nie chodzi mi o to dlaczego , tylko jak .[ jak na koncu zdania[ ;)
moje pytanie odnosi sie do koknretnej specyfikacji skladni aby zmienic flagi kompilacji w ebuildzie .

co do zagladania , zagladalem , jednakze malo :)
wlasnie ida zagladnac ;)

Posted: Tue Feb 24, 2004 12:49 pm
by btower
fragment ebuilda

Code: Select all

# Compile problems with these ...
filter-flags "-funroll-loops"
filter-flags "-fomit-frame-pointer"
filter-flags "-fprefetch-loop-arrays"
append-flags "-fno-strict-aliasing"
replace-flags "-O3" "-O2"
replace-flags "-Os" "-O2"


Posted: Tue Feb 24, 2004 1:42 pm
by fallow
nooooo..... teraz widze :)
wreszcie spotkalem np. to w xfree-4.3.99.902-r2.ebuild

Code: Select all

filter-flags "-funroll-loops"
ALLOWED_FLAGS="-fstack-protector -march -mcpu -O -O1 -O2 -O3 -pipe -fomit-frame-pointer"
no i to co napisal btower ... :)

mnostwo tego jest hehe: )

ja po prostu chyba jestem slepy ... a i sama skladnia jest prosta hehe
wczesniej nic nie widzialem hehe , jednak komu sie spieszy ....temu cos tam nie wiem co , ale dobrze sie na tym nie wychodzi hehe :)
ps.moze przyszedl czas wybrac sie do okulisty ? hehehehe