# CFLAGS/CXXFLAGS

## 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:

```

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.

----------

## Daemon42

Ok, po kolei - na temat flag:

http://lubuska.zapto.org/~hoppke/too_much_to_learn/kompilat.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.

----------

## 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"

----------

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

----------

## 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.Last edited by btower on Wed Feb 04, 2004 3:05 pm; edited 1 time in total

----------

## 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 :)

----------

## C1REX

Dokladnie tak - skoro nie moze zaszkodzic, to moze byc jedynie dla swietego spokoju.

----------

## 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

----------

## 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  :Smile: 

PS. moze to komus pomoze http://www.freehackers.org/gentoo/gccflags/flag_gcc3.html

----------

## no4b

```
CFLAGS="-Os -march=athlon -mcpu=athlon -pipe -fomit-frame-pointer -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"
```

Duron 800 mhz.

----------

## Yarecki

CFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer -mmmx -m3dnow -msse -s"

----------

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

----------

## C1REX

Ja podam link do jednego tematu z jednego z najlepszych for linuksowych w Polsce.

http://linuxweb.cyb3r.org/viewtopic.php?p=24317&highlight=falgi#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

----------

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

----------

## 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

----------

## C1REX

Jakby kogoś interesowało to podaję link do tematu

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

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

----------

## 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"

----------

## krzysz

-mmmx -m3dnow nie jest włączane domyślnie gdy podasz march=athlon-tbird ?

----------

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

----------

## 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?

----------

## fallow

wydaje mi sie ( hehe)  :Smile:  , 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) ?   :Wink: 

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

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

----------

## 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?

----------

## fallow

hehe  :Smile:   po co sie tak unosic , lepiej zapasy adrenaliny spozytkuj na cos innego  :Wink: 

, 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

 *Quote:*   

> 
> 
> 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[  :Wink: 

moje pytanie odnosi sie do koknretnej specyfikacji skladni aby zmienic flagi kompilacji w ebuildzie .

co do zagladania , zagladalem , jednakze malo  :Smile: 

wlasnie ida zagladnac  :Wink: 

----------

## btower

fragment ebuilda

```

# 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"

```

----------

## fallow

nooooo..... teraz widze  :Smile: 

wreszcie spotkalem np. to w xfree-4.3.99.902-r2.ebuild

```

filter-flags "-funroll-loops"

ALLOWED_FLAGS="-fstack-protector -march -mcpu -O -O1 -O2 -O3 -pipe -fomit-frame-pointer"

```

no i to co napisal btower ...  :Smile: 

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  :Smile: 

ps.moze przyszedl czas wybrac sie do okulisty ? hehehehe

----------

## C1REX

Powinna być jakaś opcja, lub skrypt.... lub cokolwiek, co wyłącza te ograniczenia. 

To po kiego grzyba człowiek tak te flagi kolekcjonuje? Zaczynam rozumieć, dlaczego gentoo nie jest tak szybki, jak powinien. Podobno LFS nie daje najmniejszych szans pod względem wydajności. 

hmm.... teraz pozostaje mi grzebać w ebuildach i rekompilować.

A może jest jakaś opcja do emerge ignorująca blokady?

----------

## btower

 *C1REX wrote:*   

> Powinna być jakaś opcja, lub skrypt.... lub cokolwiek, co wyłącza te ograniczenia. 
> 
> To po kiego grzyba człowiek tak te flagi kolekcjonuje? Zaczynam rozumieć, dlaczego gentoo nie jest tak szybki, jak powinien. Podobno LFS nie daje najmniejszych szans pod względem wydajności. 
> 
> hmm.... teraz pozostaje mi grzebać w ebuildach i rekompilować.
> ...

 

No ale jak pisalem ze przeciez one do czegos sluza, zreszta tych zmian jest naprawde nieduzo.

Ja nie mam zmiaru bawić się w zabawe w edytowanie tych ebuildow.

Zreszta to co cie interesuje szybko znajdziesz w /var/db/pkg/*/* bo tam sa przechowywane tez kopie ebuildow wiec za pomoca grep szybko znajdziesz to co chesz przekompilowac i co jest w systemie.

Daj znac jakie efekty bedą dla tych zmian.

Ktoś bawi się w wystawianie swoich skompilowanych paczek? 

Fajnie by było zebym nie musial kompilowac calego kde pod tylko sciagnac gotowe binarki od kogos. 

Tzn: na przyszlosc bo teraz juz skompilowalem.

Jakiego kodowania uzywasz? Napewno 8859-2 ? Bo nie widze twoich plliterek poprawnie.

----------

## C1REX

 *btower wrote:*   

> 
> 
> Jakiego kodowania uzywasz? Napewno 8859-2 ? Bo nie widze twoich plliterek poprawnie.

 

Uzywam (chyba iso8859-2). Ja u kazdego widze normalne ogonki, ale posty pisałem na konqordzie. Teraz pisze z firefoksa.

Wdać teraz ogonki żźćęąłń ?

----------

## fallow

no teraz widze ogonki C1Rex`a  :Smile: 

ale firefox`a nadal sie kompiluje  :Smile: 

tak btw. gotowych binarek , ja w sumie zawsze przy kompilacji ustawiam sobie budowanie paczek , zebym pozniej nie musial czekac , no ale czasami przydalyby sie skompilowane gdy zalezy na czasie ...

moze zwiastun tego to katalog grp ktory pojawia sie np. w http://gentoo.oregonstate.edu/ , GRP kojarzy mi sie z uzywaniem gotowych paczek , to chyba gentoo refernce platform , jakos tak to szlo nie ? ,

bo :

```

Enterprise root # emerge -G mc

!!! PORTAGE_BINHOST unset, but use is requested.

```

a z "-G"  ma pobierac gotowe paczki o ile rozumiem

moze to ma zwiazek wlasnie z tym katalogiem GRP ?

i PORTAGE_BINHOST moze nalezy ustawic na katalog GRP , ale nic w nim nie ma poki co

----------

## btower

 *C1REX wrote:*   

>  *btower wrote:*   
> 
> Jakiego kodowania uzywasz? Napewno 8859-2 ? Bo nie widze twoich plliterek poprawnie. 
> 
> Uzywam (chyba iso8859-2). Ja u kazdego widze normalne ogonki, ale posty pisałem na konqordzie. Teraz pisze z firefoksa.
> ...

 

Konqord? Nie wiem co to za przegladarka. (konqueror)

Nadal nie widze ogonków co widać w cytacie (firefox)

Jesli to konkueror to ustaw na sztywno kodowanie, bo domyslnie ma auto i to dla tego pewnie z pod konquerora wszystko widać poprawnie.

A w firefox ustawiles na wschodnio-europejskie kodowanie?

----------

## C1REX

Ja w cytacie widzę polskie. 

Masz ustawione w 

View --> character Coding --> Central European (ISO-8859-2) ?

 *btower wrote:*   

> 
> 
> A w firefox ustawiles na wschodnio-europejskie kodowanie?

 

Tak

----------

## btower

 *C1REX wrote:*   

> Ja w cytacie widzę polskie. 
> 
> Masz ustawione w 
> 
> View --> character Coding --> Central European (ISO-8859-2) ?
> ...

 

Lol.

No tego nie mialem.

Myslalem ze wystarczy w opcjach czcionki ustawic.

hehe

----------

## C1REX

Używałem konqorda, właśnie z powodu tych czcionek. FireFox za każdym razem jak wchodziłem na te forum zmieniał kodowanie na iso 8859-1 co mnie ostro wkurzało. 

Zna ktoś sposób na ustawienie kododawia w firefox na stałe?

p.s moderator będzie miał sporo pracy z wydzielaniem postów :)

----------

## fallow

hehe , to jest ze tak powiem cyrk z tymi polskimi znaczkami  :Smile: 

po co nasi dziadowie je wymyslali hehe  :Smile: 

skompilowal mi sie juz firefox . ustawilem i fonty i kodowani , wszystko co sie dalo na iso8859-2  i wschodnio-europejskie , i dalej raz w porzadku , raz krzaki , ale ten firebird nie za bardzo przypdal mi do gustu , wracam do mozilli 1.6  :Smile:  i tam jeszcze "poustawiam"  :Smile: 

----------

## no4b

 *Quote:*   

> p.s moderator będzie miał sporo pracy z wydzielaniem postów 

 

E tam, dyskujsa, jak dyskusja, zawsze zchodzi na boczny tor, to syndrom, ze jest zdrowa :d

----------

## meteo

 *fallow wrote:*   

> katalog grp ktory pojawia sie np. w http://gentoo.oregonstate.edu/ , GRP kojarzy mi sie z uzywaniem gotowych paczek , to chyba gentoo refernce platform , jakos tak to szlo nie ? ,
> 
> bo :
> 
> ```
> ...

 

z man make.conf:

 *Quote:*   

> 
> 
> PORTAGE_BINHOST = "ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp"
> 
> This is the host from which portage  will  grab  prebuilt-binary packages.   The  list  is  a  single  entry  specifying the full address of the directory serving the  tbz2's  for  your  system. This  is  only used when running with the get binary pkg options are given to emerge.  Review  emerge(1)  for  more  information. Note  that  it  should  point to the 'All' directory on the host that creates the binary packages and not  to  the  root  of  the PKGDIR.
> ...

 

----------

## fallow

wow  :Smile: 

porzadnie wyczerpalistycznie wyczerpany temat  :Wink:   :Smile:   :Smile: 

wniosek ze many czytac nalezy i uciekanie od nich w dobrym tonie nie lezy nasuwa sie jednoznacznie  :Smile: 

czyli owe katalogi grp, ktore pojawiaja sie na serverach to wlasnie to  :Smile: 

tyle ze te katalogi sa narazie puste

mowa tez o tym , ze nalezy ustawic to na katalog "packages/all" jakiegos host`a na ktorym sa pakiety , ale jedynym adresem hosta ktory znam i ktory by mial te pakiety to moj host  :Wink:  hehe... :Smile: 

moze wiec , we wzglednie  niedalekiej  przyszlosci katalogi grp mirrorow gentoo czyms sie zapelnia  :Smile:  ?

----------

## btower

 *fallow wrote:*   

> hehe , to jest ze tak powiem cyrk z tymi polskimi znaczkami 
> 
> po co nasi dziadowie je wymyslali hehe 
> 
> skompilowal mi sie juz firefox . ustawilem i fonty i kodowani , wszystko co sie dalo na iso8859-2  i wschodnio-europejskie , i dalej raz w porzadku , raz krzaki , ale ten firebird nie za bardzo przypdal mi do gustu , wracam do mozilli 1.6  i tam jeszcze "poustawiam" 

 

Polska mozilla-firefox prezentuje sie jak narazie doskonale!!

Mam ją niedługo ale chodzi super. Nie ma problemu z fontami jak i z ustawieniami do tych fontów.

Potem zrobie sobie do niej ebuilda (to binarka pod i686), opisane jest nawet jak zrobic ze źródeł, ale ebuilda ze źródeł zrobie jak bede miał więcej czasu.

http://firefox.pl

----------

## C1REX

Nie przejmując się nadmiarem agresywnych flag, przekompilowałem cały system wymieniając dodatkowo jajko z gentoo-dev-sources na gaming-sources.

```

USE="X -gtk -gnome kde qt mmx 3dnow -cups -docs alsa" 

 CHOST="i686-pc-linux-gnu" 

 CFLAGS="-O2 -march=athlon-tbird -mcpu=athlon-tbird -ftracer -falign-loops -ffast-math -frename-registers -funroll-all-loops -funroll-loops -pipe -fomit-frame-pointer ${LDFLAGS} -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS" 

 LDFLAGS="-s -z comreloc" 

 CXXFLAGS="${CFLAGS}" 

 ACCEPT_KEYWORDS="~x86" 

 MAKEOPTS="-j2" 

 AUTOCLEAN="yes" 

 LINGUAS="pl" 

```

Jak zobaczyłem pierwsze odpalenie KDE, to prawie zadławiłem się herbatą. Te flagi, to efekt długich poszukiwań i analizy wypowiedzi na grupach dyskusyjnych - głównie polskich. Najważniejsze to fomit-frame-pointer i -funroll-all-loops. Reszta też jest ważna, ale włąśnie na te ludzie zwracali największą uwagę. Nie wiem też, czy wzrost wydajności nie jest spowodowany zmianą jajka. Sporo dobrego o nim słyszałem. Niestety, ale jednoczesna zmiana wielu rzeczy nie pozwala mi ocenić co miało największy wpływ na taki przypływ mocy. 

Pozdrawiam.

p.s. Czy ktoś miał inną dystrybucję opartą na źródłach. Dobre opinie słyszałem o mało znanej distro o nazwie Sorceror - podobna do gentoo.

p.s.2. widać teraz pl-znaczki? (mam automatyczne w nowym konqordzie)

----------

## fallow

no to moze zaczne od polskich znaczkow  :Smile:  - > widac  :Smile: 

co do Sorcerer`a , to tez mnie ostatnio ow zaciekawil , i zabieram sie za to zeby po protu go zainstalowac , ciekawa jest tez Source Mage (mnie sie to kojarzy z Krav - Maga hehe  :Wink:  )

ale pewnie jak zainstaluje i jedna i druga to i tak pozniej stwierze ze nie ma jak Gentoo  :Wink: 

co do flag , ja przywiazalem sie do mojego zestawu  :Smile:  , chyba ze okaze sie , ze twoj os , dziala szybciej niz moj hehe  :Smile: 

btw. -funroll-all-loops chyba implikuje  -funroll-loops (takie tylko spostrzezenie , tak mi sie wydaje )  :Smile: 

no wiec, mamy podobny procek , ja mam athlona 1,0 , Ty masz Durona 0,8 , wiec moze po prostu okreslimy w czasie ile uruchamia sie co na systemie , jesli chodzi o start systemu , to troche ciezko , bo przeciez i Ty i Ja moge odpalac inne uslugi , hm , ale np. korzystamy z kde i xow , moze start  kde , ja jakis czas temu przekompilowalem kde3.2 na zestawie flag ktorych obecnie uzywam no i takze xfree-4.3.99 , pozniemialem ebuildy tak zebym mogl korzystac z wiekszosci moich flag i rzeczywiscie widac ze jest szybciej , tylko ciekawe jak bedzie ze stabilnoscia (dopiero dzien) hehe  :Wink: 

no wiec , kde startuje  w 6sekund . kernel gentoo-dev-sources 2.6.3-r1

ale nie wiem czy to porownanie to dobry pomysl , bo czas jest troche za maly , gdyby to bylo okolo 200sekund to juz cos  :Smile: 

swego czasu tez mialem gaming-sources-2.4.20-r6 ale nie widzialem "golym okiem" roznicy.  :Smile: 

----------

## C1REX

 *fallow wrote:*   

> 
> 
> btw. -funroll-all-loops chyba implikuje  -funroll-loops (takie tylko spostrzezenie , tak mi sie wydaje ) 
> 
> 

 

chyba dobrze się wydaje, ale niechiało się wywalać (a raczej zapomniałem). zaraz usunę śmieci.

Czy system szybko chodzi? Hmmm.. trudno mi ocenić jak by na innych działał. Te flagi są najlepsze, jakie to tej pory miałem. Muszę tylko dobrze jajo skompilować. Teraz jest "aby było" .

Pozdrawiam

----------

## misterLu

flagi , ale te od zależności , a nie kompilatora:

Dla tych co nie znają, polecam bardzo poręczny program ufed

zamias pisać 

#USE="moje flagi" emerge cośtam

można odpalić ufed, ustawić co trzeba i emergować. Zaletą programu jest to, 

że wszytkie flagi są opisane , dzięki temu niie trzebe studiować pliku

/usr/portage/profiles/use.desc

----------

## fallow

fajny ten ufed  :Wink: 

moglby byc jeszcze cfed  :Wink: 

----------

## Prompty

jest sens wklepac wszytkie flagi ktore mnie interesuja ? tzn nawet alsa oss 

tzn robic smietnik z use'a czy trzymac pare "elitarnych"flag ?

----------

## misterLu

ja tam trzymam 'elitarne' 

```
USE="doc java matrox -gnome -X -qt"
```

a reszte ręcznie dopisuje przed emergowaniem poszczególnych pakietów

----------

## C1REX

 *no4b wrote:*   

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

 

-fomit-frame-pointer powiększa kod w połączeniu z Os zarówno w C jak i C++.

----------

## cpu

Ja mam tylko pytanie takie - po co niektorzy daja -march=cpu po -mcpu=cpu ????? w ogole po co dawac te 2 opcje razem - nie widze sensu...

----------

## fallow

no to zeby bylo scislej mozna chyba dodac ze ustawienie -march=cpu implikuje odpowiednio -mcpu=cpu

pozdro  :Smile: 

----------

## meteo

 *fallow wrote:*   

> no to zeby bylo scislej mozna chyba dodac ze ustawienie -march=cpu implikuje odpowiednio -mcpu=cpu

 

...o czym już zdaje się nawet gdzieś na łamach tego forum informowałem zapaleńców bardzo_wielu_opcji_ktore_dodaja_splendoru_a_ktore_nie_koniecznie_trzeba_przecież_rozumieć

----------

## cichy

 *cpu wrote:*   

> Ja mam tylko pytanie takie - po co niektorzy daja -march=cpu po -mcpu=cpu ????? w ogole po co dawac te 2 opcje razem - nie widze sensu...

 

Różnice między -mcpu i -march są następujące:

-mcpu - optymalizacja dla podanego jako argument procesora przy zachowaniu kompatybilności z innymi procesorami; mówiąc inaczej program skompilowany z -mcpu=athlon-xp będzie zawierał optymalizacje dla athlona-xp ale będzie też chodził na innych procesorach x86

-march - optymalizacja dla podanego jako argument procesora przy braku kompatybilności z innymi procesorami; program jest wtedy krótszy i szybszy niż przy -mcpu ale nie odpali się lub nie będzie działał stabilnie na innych procesorach niż ten wymieniony jako argument

Moim zdaniem podawanie obydwu flag jest bez sensu, gdyż są one sprzeczne ze sobą. Jeśli to co kompilujesz nie będziesz wykorzystwał na sprzęcie z innym procesorem to zalecam stosowanie tylko flagi -march=<cpu>.

Pozdrawiam.

----------

## szaman

nie są sprzeczne:

 *man gcc wrote:*   

> 
> 
> -march=cpu-type
> 
> Generate instructions for the machine type cpu-type.  The choices for cpu-type are the same as for -mcpu.  
> ...

 

----------

## cichy

 *szaman wrote:*   

> nie są sprzeczne:
> 
>  *man gcc wrote:*   
> 
> -march=cpu-type
> ...

 

Mozliwe... Nie czytalem mana gcc. To co napisalem jest zawarte w komentarzach w pliku /etc/make.conf. Biorac pod uwage to co Ty napisales i to co jest w make.conf w -march i w -mcpu  sa takie same optymalizacje z tym ze z -march z kodu programu wywalane sa procedury zwiazane z obsluga innych procesorow. Ja przynajmniej doszedlem do takich wnioskow... Jesli jest inaczej to niech ktos mnie oswieci..

----------

## fallow

dla mnie to to jest tak , ze ustawienie -march,ktore implikuje odpowiednie ustawienie -mcpu , powoduje genrowanie kodu z wykorzystaniem specyficznych dla  danego procesora instrukcji , wszystko i tak dziala w obrebie jednej architektury i roznice w intrukcjach nie sa zbut duze(no po za np. mmxem czy 3dnow)  386 od 486 rozni sie jedynie kilkoma malo wykorzysywanymi instrukacjami,wiec lepsze rezultaty daja sama optymalizacja kodu na poziomie assemblera

mozna uzywac rozszerzonych zestawow typu mmx czy 3dnow :

http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/X86-Built-in-Functions.html#X86%20Built-in%20Functions

ale niektore z tych instrukcji  , moga i tak byc uzyte na procesorach ktore ich nie obsluguja przez odpowiedna deklaracje , czego chce sie uzywac 

http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Vector-Extensions.html#Vector%20Extensions

ok oto moje pytania :

w takim razie skoro na 386 mozna w niektorych przypadkach korzystac np z mmxowych funkcji , to jak to sie dzieje, intrukcja jest realizowana przy pomocy odpowiedniej funkcji jeszcze na poziomie C ?

no i czy ustawienie odpowiedniego march , implikuje ustawienie odpowiedniego zestawu rozszerzonego zestawu instrukcji jak mmx  ?

(poprawcie mnie jesli cos zle rozumie,albo sie myle i takie tam ) 

pozdro  :Smile: 

----------

## C1REX

Paczki slacka są kompilowane z 

march=386

mcpu=686

....pozostawiam do własnej interpretacji.

----------

## cichy

 *C1REX wrote:*   

> Paczki slacka są kompilowane z 
> 
> march=386
> 
> mcpu=686
> ...

 

Jak widzę powyższy zapis to przestaję cokolwiek rozumieć.  :Sad:  Niech ktoś przetłumaczy poniższy tekst bo ja już nic nie wiem...

```

# Host and optimization settings

# ==============================

#

# For optimal performance, enable a CFLAGS setting appropriate for your CPU

#

# -mcpu=<cpu-type> means optimize code for the particular type of CPU without

# breaking compatibility with other CPUs.

#

# -march=<cpu-type> means to take full advantage of the ABI and instructions

# for the particular CPU; this will break compatibility with older CPUs (for

# example, -march=athlon-xp code will not run on a regular Athlon, and

# -march=i686 code will not run on a Pentium Classic.

#

```

Czyżby moja znajomość angielskiego była tak fatalna? Bo zakładam że ludzie tworzący slacka są o wiele mądrzejsi ode mnie...

----------

## fallow

 *C1REX wrote:*   

> Paczki slacka są kompilowane z 
> 
> march=386
> 
> mcpu=686
> ...

 

po mojemu , wychodzi na to , ze to optymalizacja kodu na 686 , a korzystanie z instrukcji maxymalnie 386 , wiec program jest zoptymalizowany pod katem 686 , ale pojdzie tez na 386 , bo nie korzysta z instrukcji specyficznych dla >386 , wiec dzialanie dla zachowania kompatybilnosci w dol.

czyli mcpu - optymalizacja kodu pod katem danego procka , march , korzystanie z intrukcji wlasciwych dla architektury danego procka , optymalizacja kodu to tylko odpowienie ustawienie ciagu intstukcji , zeby wykonywaly sie w jak najmniejszej ilosci cykli , wiec jest zachowana zgodnosc w dol , no a jesli cos korzysta ze specyficznych instruckji (march) , no to kompatybilnosci w dol juz nie ma 

(tam mysle)  :Smile:   :Smile: 

pozdro  :Smile: 

----------

## cpu

A ja dalej uwazam ze ustawianie -march i -mcpu jest zbedne...

Okej pytanie moje - wasze obserwacje przy -Os wzgledem -O2 no ewentualnie -O3

----------

## fallow

wydahe mi sie ,ze zalezy co sie chce uzyskac , jesli uzyskac kod zoptymalizowany na swoi procek i wykorzystujacy instrukcje swojego procka,to wystarczy ustawic march,bo mcpu zostane ustawione odpowiednio do march,bo przeciez chyba malo kto zajmuje sie potem dystrybucja np. swoich odpowiednio skompilowanych paczek i chce zachowac zgodnosc w dol  :Smile: 

(jsmp) (j)esli (s)ie (m)yle (p)oprawcie  :Wink: 

pozdro  :Smile: 

----------

## meteo

 *cpu wrote:*   

> Okej pytanie moje - wasze obserwacje przy -Os wzgledem -O2 no ewentualnie -O3

 

miałem problemy ze stabilnością przy -O3 i maksymalnie podkręconych flagach (typu -fxxxx), ale przyznaję, było to dość dawno i może od tego czasu coś się zmieniło. teraz korzystam z -Os i jestem zadowolony.

1. Athlon 700MHz, Abit KT7-Raid, 256MB SDRAM, Fujitsu 10GB@udma4, IBM 30GB@udma5

2. Pentium2 233MHz, 256MB SDRAM, Seagate 9GB@ultra wide scsi

3. VIA Ezra 800MHz, 256MB SDRAM, Seagate 40GB@udma5

----------

## cpu

W sumie to wychodzi na to ze to wpisywanie "dla pewnosci" mozna porownac do zakladania 2 gumek   :Wink:   (mysle o -march obok -mcpu)

----------

## btower

 *C1REX wrote:*   

> Paczki slacka są kompilowane z 
> 
> march=386
> 
> mcpu=686
> ...

 

Czy aby nie zrezygnowano w slacku-u z kompatybilnością z 386 jakiś czas temu?

----------

## C1REX

 *btower wrote:*   

> 
> 
> Czy aby nie zrezygnowano w slacku-u z kompatybilnością z 386 jakiś czas temu?

 

Z tym jest trochę dziwnie, bo teoretycznie system jest zgodny z 386, ale oficjalne wymaganie dla slacka 9.1 to 486. 

Ten trick, który podałem podobno przy zachowaniu zgodności z 386 daje pełne mozliwości z wykorzystania funkcji procesorów 686.  Nie wiem na ile jest to prawdą, ale slack moim zdaniem jest bardzo wydajny. O tej optymalizacji wyczytałem w pewnej gazecie (Linux+ bodajże).

Podobno najbardziej wydajna optymalizacja to 02 i O3. Os traci do 2 i 3 ponad 10%. Wszystko to jednak teoria i trudno jednoznacznie stwierdzić co jest najlepsze dla konkretnego programu i dla naszego sprzętu. 

Ostatnio np.  znajomy przetestował, że fomit-frame-pointer powiększa kod dla _każdego_ przetestowanego programu przy każdym stopniu optymalizacji. To zdaje się przeczyć wszystkim dochczas znanym mi artykułom. Pozostaje kwestia wpływu tej flagi na wydajność. 

Zaczynam wątpić, aby flagi mogły w znaczym stpniu (znacznym - rzecz względna) zwiększyć wydajność softu. 

Dla LFS zalecanymi flagami są O3 i march.

----------

## fallow

 *C1REX wrote:*   

> 
> 
> Ten trick, który podałem podobno przy zachowaniu zgodności z 386 daje pełne mozliwości z wykorzystania funkcji procesorów 686.  Nie wiem na ile jest to prawdą, ale slack moim zdaniem jest bardzo wydajny. O tej optymalizacji wyczytałem w pewnej gazecie (Linux+ bodajże).
> 
> 

 

nie moze dawac pelnych mozliwosci wykorzystania 686 jesli nie korzysta z jego instrukcji , a tylko (i az  :Smile:  ) optymalizuje kod na 686.

jesli wskaze sie archtiekture jako np. 686 wtedy mozna korzystac z takich instrukcji jak : BSWAP,INVD czy WBINVD, nie sa one najczesciej uzywania ale sa  na 386 ich nie ma , i tak skompilowany program odpalony na 386 po psrostu wykona w pewnym momencie niedozwolona intstrukcje i sie sypnie  :Smile:  , takie ustawienie jakie podales , w takim razie , powoduje korzystanie z zestawu instrukcji 386 a optymalizacje kodu na 686

a tak btw , to ktos korzysta jeszcze z 386 albo 486 ?  :Smile:  chya wyjatki , jak dla mnie mozna przyjac ze minimum to 586 

pozdro  :Smile: 

----------

## C1REX

Może i nie wykorzystuje, ale podobno nie ma odczuwalnej różnicy w wydajności. Nie wiem, na ile jest to prawda, a na ile reklama produktu. Czy ktoś z Was ma jednocześnie zainstalowanego slacka i gentoo? U mnie slack nie ma się czego wstydzić - jest bardzo szybki. 

Inna zupełnie sprawa, że nie tylko szybkość się liczy.

----------

## fallow

co do oczuwania tej roznicy wynikajacej z roznicy w zestawie intrukcji 386 a 686 to zgadzam sie w 100% , ze jest nieodczuwalna , inna sprawa mmx czy 3dnow, no i rowniez w 100% zgadzam sie , ze nie tylko szybkosc sie liczy  :Smile: 

pozdro  :Smile: 

----------

## C1REX

 *cpu wrote:*   

> A ja dalej uwazam ze ustawianie -march i -mcpu jest zbedne...
> 
> Okej pytanie moje - wasze obserwacje przy -Os wzgledem -O2 no ewentualnie -O3

 

Zdania na temat march i mcpu są nadal podzielone. Slack do dziś jest kompilowany z obiema flagami.

Jeśli wierzyć winikom testów(zależy od testu), to Os NIE wypada dobrze. Testy mówią, że jednak O3 daje najlepsze wyniki(ogólnie).... Tylko, że gdzie jest dwuch, tam trzy teorie. 

W Polsce spora grupa ludzi jest przekonana, że Os jest najlepsze. Całe swoje przekonanie opierają na http://lubuska.zapto.org/~hoppke/too_much_to_learn/kompilat.html

Nie uważam tego za coś złego, ale to jest jedna z tych "na pewno słusznych teorii". Takich teorii jest cała masa i już się przekonałem, że na jednym tekście nie warto opierać swojej wiedzy. 

Moje zdanie na dziś: O3/O2 

Z tego co wiem, to O3 różni się od O2 jedną flagą: -frename-registers

Jako ciekawostkę zacytuję pewnego pana.

 *Quote:*   

> -frename-registers: A perfect example of application dependence of benchmarks: GIMP 1.3.23: I ran a couple of filters to see the difference among -O2 vs. -Os vs. -frename-registers. I found that -frename-registers actually did help in combination with -O2 for Gaussian blur and illusion (those were both during the same run because I hadn't been expecting interesting results) for an 8% speedup. The only thing -Os and -O2 differed on was clothify, where -Os was 10% slower. Mosaic made no difference. By then I was bored, and didn't test anything else.  

 

Jest to jeden z wielu tekstów, gdzie Os nie ma dobrej opinii. Tyle samo  można znaleść zachwalających ten stopień optymalizacji.  

Dla świętego spokoju można zainstalować sobie Debiana. Chyba już jest stabilny Sarge.

----------

## meteo

... no to może spróbuję czegoś takiego

```
CFLAGS="-march=athlon-tbird -O3 -m3dnow -mmmx -fomit-frame-pointer"

emerge --emptytree world
```

  :Rolling Eyes: 

----------

## fallow

tak btw. tylko takie wtracenie , aby uporzadkowac swoje zestawy flag 

co poszczegolne poziomy optymizacji wlaczaja : 

```

gcc3.3.3

O1 : 

          -fdefer-pop 

          -fmerge-constants 

          -fthread-jumps 

          -floop-optimize 

          -fcrossjumping 

          -fif-conversion 

          -fif-conversion2 

          -fdelayed-branch 

          -fguess-branch-probability 

          -fcprop-registers

O2=O1+

          -fforce-mem 

          -foptimize-sibling-calls 

          -fstrength-reduce 

          -fcse-follow-jumps  -fcse-skip-blocks 

          -frerun-cse-after-loop  -frerun-loop-opt 

          -fgcse   -fgcse-lm   -fgcse-sm 

          -fdelete-null-pointer-checks 

          -fexpensive-optimizations 

          -fregmove 

          -fschedule-insns  -fschedule-insns2 

          -fsched-interblock -fsched-spec 

          -fcaller-saves 

          -fpeephole2 

          -freorder-blocks  -freorder-functions 

          -fstrict-aliasing 

          -falign-functions  -falign-jumps 

          -falign-loops  -falign-labels

O3=O2+

          -finline-functions and -frename-registers

```

mozna jeszcze dodac , ze lubiany :

```

-fomit-frame-pointer

Enabled at levels -O, -O2, -O3, -Os. 

```

pozdro  :Smile: 

----------

## C1REX

 *fallow wrote:*   

> 
> 
> mozna jeszcze dodac , ze lubiany :
> 
> [code]
> ...

 

To może kogoś w błąd wprowadzić. Radzę skompilować i samemu sprawdzić różnicę w samej tylko wielkości. Już komuś, kiedyś to samo cytowałem.

 *Quote:*   

> 
> 
> When you specify `-O', the compiler turns on `-fthread-jumps' and 
> 
>  `-fdefer-pop' on all machines. The compiler turns on 
> ...

 

----------

## fallow

a uzywa ktos moze : -fbranch-probabilities w polaczeniu z -fprofile-arcs

wedlug mana gcc nalezy uzywac " to improve optimizations based on the number of times each branch was taken ", uzywa sie tego w taki sposob, ze najpierw kompiluje sie z flaga -fprofile-arc , co powoduje zapisywanie do kazdego pliku.c pliku .da , pozniej kompiluje sie drugi raz z flaga -fbranch-probabilities ,  wlasnie teraz testuje sobie ta flage i zobacze jak wiele  i czy to cos daje , a jakie wasze zdanie na temat owej ?  :Smile: 

jeszcze ciekawi mnie nowa wersja alokacji rejestrow na grafach  -fnew-ra 

i fssa , 

te fukcje sa w fazie eksperymentalnej wedlug mana gcc , ale czemu nie sprobowac .

czekam na opinie  :Smile:   :Smile: 

pozdro  :Smile: 

----------

## C1REX

Ostatnio znalazłem dość ciekawy link

http://home.comcast.net/~jcunningham63/linux/GCC_Optimization.html

Tu widać wyraźnie wpływ niektórych flag na wydajność systemu.

Mam jescze małe pytanie na temat funroll-all-loops.

Ta flaga jest tak samo zachwalana przez jednych, jak odradzana przez innych. 

Czy ktoś ma jakieś doświadczenia z tą flagą?

Czy ma ktoś może wyniki testów programów potraktowanych tą flagą. 

Moje subiektywne odczucie na temat funroll-all-loops jest bardzo pozytywne, ale nie mogę go potwierdzić obiektywnymi dowodami. Mam za małą wiedzę na ten temat. Polecenie "time" to chyba za mało.....

----------

## fallow

hello  :Smile: 

jak dla mnie to zalezy jakie petle sie rozwija , jesli jest to jakies proste kopiowanie tablicy to nie ma sensu tego rozwijac , tylko lepiej stosowac wstawki w assemblerze typu rep movs(x) , gcc i tak rozwiaja nawet przy fladze "all" petle tylko do sensownych rozmiarow bo przeciez wtedy binaria moglby by sie znacznie rozrosnac , mysle , ze sens jest rozwijac np. petle przy bardziej zlozonych operacjach jak np. mnozenie macierzy

a to wlasnie wyniki takiego programu (z Instytutu J.Stefan`a)

ps.jak dla mnie do tesotw obliczeniowych time spokojnie wystarcza , bo przeciez chodzi o czas  :Smile: 

```

Table I-1. Matrix multiplication (REAL*8) on Urartu (Linux, Pentium II 300, 

64 MB). Program p25.f, ND = 800, N = 800: theoretical lower limit on 

CPU time: 3.4 sec.

-------------------------------------------------------------------------------

Program  f77 options                                               CPU time

-------------------------------------------------------------------------------

                                                                                           97

         -O3                                                                            47

         -O3 -funroll-loops                                                        47

         -O3 -funroll-all-loops                                                    47

         -O3                -fstrength-reduce                                    47

         -O3 -funroll-loops -fstrength-reduce                               47

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt   29

    -O3 -funroll-loops                   -fno-rerun-loop-opt          29

    -O3 -funroll-all-loops               -fno-rerun-loop-opt          29

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt 

         -fexpensive-optimizations                                         29

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt 

         -fforce-mem                                                           29

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt 

         -fforce-addr                                                           29

    -O3 -funroll-loops                   -fno-rerun-loop-opt 

         -fforce-mem -fforce-addr                                         29

```

pozdro:)

----------

## C1REX

Właśnie kompiluję sobie nowego mplayera i zauważyłem coś dziwnego. Domyślnym poziomem optymalizacji ustawiło mi na O4. 

Słyszałem, że w nowym gcc wprowadzili ten stopień, ale jeszcze nie udokumentowali. 

Wiecie coś o tym?

----------

## fallow

faktycznie  :Smile: 

jednak zaciekawilo mnie cos , znalazlem jakies benchamarki z 1996 roku i juz wtedy "bylo" -O4 co z reszta widac w linku 

porownanie bez optym. do -O4

http://www.ccs.neu.edu/home/will/Twobit/benchmarks1.html

jednak to nie wszystko , niektorzy uzywaja takze np. -O5 i -O6

http://homepages.cwi.nl/~tromp/c4/fhour.html

trzeba bedzie sprobowac z -O4,5,6 a moze -O99999?  :Wink: 

pozdro  :Smile: 

----------

## fallow

zrobilem kilka testow i te same programy kompilowane odpowiednia z -O3 i -O4 maja dokladnie takie same objetosci plikow wynikowych ,  czyli co ...czy -O4 to mit i "lipa" , no ale czemu w mplayerze std jest ustawione -O4 , mit i lipa czy prawda z tym -O4 ?  :Smile:  hehe

----------

## krzysz

A czy -O4, O5 itd nie dają takiego samego rezultatu jak O3 (przynajmniej jeżeli chodzi o gcc3.3 ?

----------

## fallow

no wlasnie "z tym caly temat" , po mojemu -0x gdzie x>3 = O3 , bo objetosci te same , a i roznic zadnych ....

```

Enterprise tmp1 # ls -al

total 182

drwxr-xr-x   2 root root   120 Mar 26 14:03 .

drwxr-xr-x  28 root root   704 Mar 25 20:41 ..

-rwxr-xr-x   1 root root  3364 Mar 21 09:26 arch

-rwxr-xr-x   1 root root 86900 Mar 26 14:02 gzipo3

-rwxr-xr-x   1 root root 86900 Mar 25 21:38 gzipo4

Enterprise tmp1 # diff gzipo3 gzipo4

Enterprise tmp1 #

```

pozdro  :Smile: 

----------

## OBenY

No bo optymalizacje wieksze niz -O3 to alias do -O3 - pisali tak kiedys na linuxnews., czy jeszcze gdzies. Chyba artykul sie nazywal "gcc myth and legends" - or something like that  :Wink: 

----------

## C1REX

Zastanawia mnie tylko cel ustawienia tej flagi dla mplayera jako domyślnej. 

Flagi na dziś: (bardzo mi pomógł fallow)

duron800

```
CFLAGS="-O3 -march=athlon-tbird -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer -fforce-addr -fmove-all-movables -ffast-math -s -mmmx -m3dnow -fstrength-reduce -fno-rerun-loop-opt -DNDEBUG -DG_DISABLE_ASSERT"

USE="qt kde mmx 3dnow -gnome -gtk -java -cups"
```

To chyba najlepsze flagi, jakie do tej pory miałem.

----------

## fallow

hello  :Smile:  :Smile: 

to ja sie podpisze pod takimi : 

CFLAGS="-O3 -march=athlon-tbird  -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer  -fforce-addr  -fmove-all-movables  -ffast-math -s -mmmx -m3dnow "

zeby nikt sie nie czapial ze -Ox wlacza fomit`a , to wlacza , ale nie w kazdym przypadku  :Smile: 

pozdro  :Smile: 

----------

## zieloo

Jakie flagi kompilatora polecilibyscie na celerona. Chodzi mi o sprawnie i szybko dzialajacy system, ale bez przesady - stabilnosc przede wszystkim. Z gory dziekuje za pomoc...

----------

## C1REX

 *zieloo wrote:*   

> Jakie flagi kompilatora polecilibyscie na celerona. Chodzi mi o sprawnie i szybko dzialajacy system, ale bez przesady - stabilnosc przede wszystkim. Z gory dziekuje za pomoc...

 

```
-O3 -mcpu=pentium3 -march=pentium3 -mfpmath=sse -fomit-frame-pointer -ftracer -fforce-addr -funroll-loops -fprefetch-loop-arrays -ffast-math -pipe  -DNDEBUG -DG_DISABLE_ASSERT

LANGUAS="pl"

```

To są sprawdzone i bardzo popularne flagi. Celerona dla kompilatora przedstawia sie jako P3. 

(Flagi skopiowane od OBenY'ego - trudno było znaleść lepsze)

----------

## OBenY

No teraz sobie nieco agresywniejsze flagi wrzucilem, czesc systemu sie przekompiluje w czasie nocy, wiec jutro zobaczymy co to warte jest  :Smile: 

```
LDFLAGS="-s -z combreloc"
```

```
CFLAGS="-O3 -mcpu=pentium4 -march=pentium4 -mfpmath=sse -fomit-frame-pointer -ftracer -fforce-addr -funroll-loops -fprefetch-loop-arrays -ffast-math -fmove-all-movables -maccumulate-outgoing-args -pipe $LDFLAGS -DNDEBUG -DG_DISABLE_ASSERT"
```

----------

## C1REX

Zauważyłeś jakąkolwiek różnicę?

----------

## OBenY

nie  :Smile: 

----------

## C1REX

Chyba mi się wydaje i na pewno brakuje mi dobrego programu do testowania, ale...

-DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS

_odczuwalnie_ wpływa na wzrost wydajności. Kiedyś @pluto bardzo zachwalał te flagi. Sam miał skompilowane z nimi cały userland jego PLD-CVS i FreeBSD. Teraz moje flagi wyglądają koszmarnie, ale wydajność.... jestem happy :D

Ten sam pluto bardzo zachwalał też funroll-all-loops. Większość ludzi mocno odradza tą flagę, ale z testów które przytaczał było widać przewagę tej flagi nad funroll-loops. Niestety, ale te trzy  flagi pluta nie są często brane pod uwagę w testach. Jednak kilka wybitnych osób skusiło się na kompilację całego systemu z tymi flagami i dziękawało pluto za dobrą radę. 

Co najlepiej skompilować i jak zbadać wydajność softu? 

Mam co prawda dwie dystrybucję (teraz 2X Gentoo), ale z moim Duronkiem kompilacja całego systemu w tle to nie jest przyjemna czynność, a ocena "na oko" jest mało dokładna :)

----------

## gotrek

A jest moze jakas strona www ktora zajmuje sie porownaniem roznych zestawow flag?

----------

## cin0l

witam

 *Quote:*   

> A jest moze jakas strona www ktora zajmuje sie porownaniem roznych zestawow flag?

 

w tym temacie bylo kilka linkow, ktore pokazywaly testy na roznych flagach..

----------

## Poe

witam. no więc tak. kompilowałem całe Gentoo z  -O3, tylko na pentium4, a ja mam Celerona 2.00 no i po kompilacji i działaniu na Gentoo, to system działa bardzo mało stabilnie, podczas kompilacji, np. Quanty wywala mi konsole, znika panel dolny i zostaje sam pulpit i musze resetować X'y. albo ni stąd ni z owąt nagle zamyka mi 3/4 stron www w Konquerorze. wogole podczas kompilacji czego kolwiek (dopoki całkiem nie wywali, ze nie moze kompilować) to system ścina, ledwo mysz działa. spróbowałem z flagami -O4 (od C1Rexa) i też wpisałem pentium4. Jakie powinny być flagi dla mego celerona? 

Info o moim procesorze:

```

SiSoftware Sandra

Processor

Model : Intel(R) Celeron(R) CPU 2.00GHz

Speed : 2.00GHz

Performance Rating : PR2200 (estimated)

Type : Standard

Package : FC ?PGA478

Rated Speed/FSB : 2000MHz / 4x 100MHz

Multiplier : 20/1x

Minimum/Maximum Multiplier : 0/1x / 20/1x

Generation : G7

Name : P4C (Northwood128) Celeron 130nm 2GHz+ 1.525V

Revision/Stepping : 2 / 7 (A)

Stepping Mask : C1

Core Voltage Rating : 1.525V

Maximum Physical / Virtual Addressing : 36-bit / 32-bit

Native Page Size : 4kB

Co-Processor (FPU)

Type : Built-in

Revision/Stepping : 2 / 7 (A)

Processor Cache(s)

Internal Data Cache : 8kB Synchronous Write-Thru (4-way sectored, 64 byte line size)

Internal Trace Cache : 12kB Synchronous Write-Thru (8-way, 64 byte line size)

L2 On-board Cache : 128kB ECC Synchronous ATC (2-way sectored, 64 byte line size)

L2 Cache Multiplier : 1/1x  (2000MHz)

Upgradeability

Socket/Slot : Socket 478

Upgrade Interface : ZIF Socket

Supported Speed(s) : 2.00GHz+

Processor Power Management

Processor Throttling Enabled : Yes

Throttle Range : 50% - 100%

Environment Monitor 1

Model : ITE IT8705/12 ISA

Mainboard Specific Support : No

Power Rating(s)

CPU Core Power : 49W (estimated)

Sensors

Auto Fan Speed Control : No

CPU Fan Speed : 4441rpm

CPU Voltage : 1.47V

Features

FPU - Co-Processor Built-in : Yes

VME - Virtual Mode Extensions : Yes

DE - Debugging Extension : Yes

PSE - Page Size Extension : Yes

TSC - Time Stamp Counter : Yes

MSR - Model Specific Registers : Yes

PAE - Physical Address Extension : Yes

MCE - Machine Check Exception : Yes

CX8 - Compare & Exchange Instruction : Yes

APIC - Local APIC Built-in : No

SEP - Fast System Call : Yes

MTRR - Memory Type Range Registers : Yes

PGE - Page Global Enable : Yes

MCA - Machine Check Architecture : Yes

PAT - Page Attribute Table : Yes

PSE36 - 36-bit Page Size Extension : Yes

PSN - Unique Serial Number : No

CLF - Cache Line Flush Support : Yes

DS - Debug Trace & EMON Store : Yes

ACPI - Software Clock Control : Yes

MMX Technology : Yes

FXSR - Fast Float Save & Restore : Yes

SSE Technology : Yes

SSE2 Technology : Yes

SS - Self Snoop : Yes

HTT - Hyper-Threading Technology : No

TM - Thermal Monitor : Yes

SBF - Signal Break on FERR : Yes

SSE3 Technology : No

MON - Monitor/MWait : No

DSCPL - CPL qualified Debug Store : No

EST - Enhanced SpeedStep Technology : No

TM2 - Thermal Monitor 2 : No

CID - Context ID : No

DAZ - Denormals Are Zero : Yes

Advanced Settings

Data Error Checking : No

Fast Strings : Yes

x86 FPU Compatibility Mode : No

Prefetch Queue : Yes

Branch Trace Storage : Yes

IO Queue Depth : 12 request(s)

TM - Thermal Monitor : No

Machine Check Architecture Settings

Number of Reporting Banks : 4 bank(s)

Extended Machine Check Support : Yes

Number of Extended Reporting Banks : 12 bank(s)

(..)

```

Myśle, ze to powinno pomóc. 

pozdrawiam.

Własnie sie dowiedziałem że O3=O4, także jak poustawiać te flagi odpowiednio? bo tak nawet MDK mi nie działał (tak nie stabilnie)!

PS

te wcześniejsze to były 

```

-O3 -mcpu=pentium4 -march=pentium4 -mfpmath=sse -fomit-frame-pointer -ftracer -fforce-addr -funroll-loops -fprefetch-loop-arrays -ffast-math -pipe  -DNDEBUG -DG_DISABLE_ASSERT

```

----------

## Poe

no chyba, ze macie inne koncepcje, bo to może nie jest wina flag?? własnie kompilowałem proftpd i standardowo zaczęło ścinac, ze mysz sie nie ruszała, zamkneło mi kadu całkiem i częsc otwartych stron www, ale wyjatkowo KDE sie nie zamknęło...

----------

## gotrek

No to ja pochwale sie swoimi. nie sa doskonale ale dzialaja:)

```

CFLAGS="-O3 -march=athlon-tbird -pipe -fmove-all-movables -fforce-addr -fstrength-reduce -fomit-frame-pointer -funroll-all-loops -finline-functions -fprefetch-loop-arrays -fno-rerun-loop-opt -ffast-math -frename-registers -s -mmmx -m3dnow -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
```

----------

## fallow

 *Quote:*   

> 
> 
> CFLAGS="-O3 -march=athlon-tbird -pipe -fmove-all-movables -fforce-addr -fstrength-reduce -fomit-frame-pointer -funroll-all-loops -finline-functions -fprefetch-loop-arrays -fno-rerun-loop-opt -ffast-math -frename-registers -s -mmmx -m3dnow -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
> 
> 

 

hello : poziom 03 implikuje : -frename-reigsters , -finline-functions , -fstrength-reduce , nie czepiam sie , ale uporzadkowane chyba lepiej sie "czyta" 

pozdro  :Smile: 

----------

## axquan

 *gotrek wrote:*   

> No to ja pochwale sie swoimi. nie sa doskonale ale dzialaja:)
> 
> ```
> 
> CFLAGS="-O3 -march=athlon-tbird -pipe -fmove-all-movables -fforce-addr -fstrength-reduce -fomit-frame-pointer -funroll-all-loops -finline-functions -fprefetch-loop-arrays -fno-rerun-loop-opt -ffast-math -frename-registers -s -mmmx -m3dnow -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
> ...

 

Zauważyłem, że często podając swoje flagi często powtarzacie te, które zostały już włączone na etapie -Ox . Np w twoich flagach -finline-functions jest już włączone na poziomie -O3. I mam w związku z tym pytanie, czy powtarzanie flag cokolwiek daje? Czyli np. moje flagi wyglądają tak:

```

CFLAGS="-march=pentium4 -Os -fmove-all-movables -finline-functions -fforce-addr -mfpmath=sse -s -pipe -ftracer -fprefetch-loop-arrays -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
```

i jeśli dodam do nich -fomit-frame-pointer, który jest ustawiany na poziomie -Os, to czy coś to da, czy może nic nie da?

----------

## fallow

owe "powtarzanie" nic nie daje , po prostu ustawie flage ktora jest juz ustawiona przez odpowieni poziom optymalizacji

tu z reszta wszystko jest 

http://gcc.gnu.org/onlinedocs/gcc-3.3.3/gcc/

pozdro  :Smile: Last edited by fallow on Thu Apr 08, 2004 8:08 pm; edited 1 time in total

----------

## gotrek

Jak dla mnie to wyglada tak,ze te ktore dodam z innych O dopisane zostana do mojej konfiguracji bo wkoncu gdyby tak nie bylo flagi nie gryzyly by sie ze soba niektore. A co do nadpisywania to co jest w moim O to dla pewnosci moge  to przepisac recznie  :Cool: 

----------

## axquan

dobra dzięki, ale ja mam trochę inny sposób na flagi. Mianowicie zamist czytać calego man`a gcc, szukam w necie flag innych osób, a potem wyszukuje w man gcc , czytam opis i patrze na komentarz o tym, czy dana flaga coś daje, czy nie  :Smile: 

Genialne w swej prostocie    :Laughing: 

----------

## C1REX

 *axquan wrote:*   

> 
> 
> i jeśli dodam do nich -fomit-frame-pointer, który jest ustawiany na poziomie -Os, to czy coś to da, czy może nic nie da?

 

O tym już chyba było.

 *Quote:*   

> 
> 
> When you specify `-O', the compiler turns on `-fthread-jumps' and 
> 
>  `-fdefer-pop' on all machines. The compiler turns on 
> ...

 

---------------------------------------------------

 *axquan wrote:*   

> . Mianowicie zamist czytać calego man`a gcc, szukam w necie flag innych osób, a potem wyszukuje w man gcc , czytam opis i patrze na komentarz o tym, czy dana flaga coś daje, czy nie :) 

 

man trochę zbyt ostrożnie podchodzi do opisu. Np. funroll-loops moim zdaniem w man jest trochę niesprawiedliwie potraktowany, nie mówiąc już o funroll-all-loops. Do mnie przemawiają tabelki i wyniki testów.

Co zaś się tyczy ustawiania flag "na wszelki wypadek". Niby według gcc to mało logiczne, ale z emerge już trochę inaczej to wygląda. Chodzi o to, że np. czasem O3 w ebuldzie jest zamieniane na O2 i masa (w tym wypadku dwie) optymalizacji znika. Jednak zmieniając same Ox, nadal działają te "na wszelki wypadek". Oczywiście pozostaje jeszcze kwestia, czy takie flagi są korzystne dla wydajności systemu. Ktoś przecież te ograniczenia po coś wprowadził. 

To są oczywiście tylko moje przemyślenia  i mogą być zupełną bzdurą.

Pozdrawiam.

----------

## OBenY

Moze mnie ktos natchnac, czy oplaca sie miec we flagach -fmove-all-movables i co ona robi, bo wrzucilaem ja do moego zestawu flag ze wzgledu , ze wielu z Was ma ja. Mam procek pentium4 z 512 kB cache. Dodatkowo, co sadzicie o -maccumulate-outgoing-args ?

----------

## fallow

wydaje mi sie , ze move-all-movables przenosi wszystkie intstrukcje z petli ktore nie zmieniaja nic  podczas jej wykonywania poza petle , czyli np : 

```

for ( int y = 0 ; y<200; y++)

 for (int x =0 ; x<320;x++)

      { int xx = screen_x ;

        copy ( ) ;

   i cala reszta blbablabla :):) 

    } 

```

to np. takie xx= screen_x mozna spokojnie przeniesc przed petle , i to wlasnie robi move-all-movables 

dlatego jej uzywam  :Smile:  , a nie wiem co robi "maccumulate-outgoing-args" wiec ...nie uzywam  :Smile:  , ale chetnie bym sie dowiedzial 

C1REX wiecej wie  o statystykach , to pewnie rzuci cos ciekawego  :Smile: 

pozdro  :Smile: 

----------

## C1REX

 *Quote:*   

> Question:
> 
>  -maccumulate-outgoing-args 
> 
>  Answer:
> ...

 

Sporo osób bardzo poleca tą flagę.

http://home.comcast.net/~jcunningham63/linux/GCC_Optimization_zeus.html

Niestety, ale takie tabelki dość trudno znaleść.

----------

## fallow

czyli to bardziej z grypy "m"owych , no to ja dodaje ja u siebie  :Smile: , opis jest zachecajacy , w koncu mam modern-cpu  :Smile:  hehe , pozdro  :Smile: 

----------

## OBenY

C1REX, mana potrafie czytac  :Smile: 

Aler to co jest w manie nie zawsze jest zbiezne z prawda, dlatego pytam na forum  :Smile: 

----------

## C1REX

Przytoczyłem ten cytat, żeby każdy wiedział bez szukania o czym jest rozmowa.

Przejrzałem trochę fora i grupy dskusyjne i wychodzi na to, że to jedna z tych, co teoretycznie same korzyści niesie. Nawet ci, co nie lubią mieć 3 linii flag ustawionych, wstawiają ją do swego zestawu. Trudno jest podać jakiś wynik oficjalnego testu, bo o takie dość trudno. Pozostaje nam polegać na opinii innych - a ta jest jak najabardziej na "tak". O minusach nic nie znalazłem.

----------

## C1REX

Jeśli kogoś by interesowały inne flagi niż cflags i cxxflags to można zajrzeć tu:

https://forums.gentoo.org/viewtopic.php?t=67777

----------

## fallow

fajny link  :Smile: 

ustawilem sobie troche flag linkera , poszukam teraz sczegolowych opisow  ld i asflags 

pozdro  :Smile: 

----------

## OBenY

Jak na moj gust, to -maccumulate-outgoing-args szkodzi kodowi wykonywanemu na Intelach, chodzi wolniej. Wydaje mi sie, ze lepszym rozwiazaniem jest -mfpmath=sse,i387 - nie zawsze przeciez tzreba korzystac z rozbudowanego sse, czasem zwykly sposob liczenia jest przeciez zlepszy, czyz nie ?

Jak Wy to widzicie ?

----------

## fallow

 *OBenY wrote:*   

> Jak na moj gust, to -maccumulate-outgoing-args szkodzi kodowi wykonywanemu na Intelach, chodzi wolniej. Wydaje mi sie, ze lepszym rozwiazaniem jest -mfpmath=sse,i387 - nie zawsze przeciez tzreba korzystac z rozbudowanego sse, czasem zwykly sposob liczenia jest przeciez zlepszy, czyz nie ?
> 
> Jak Wy to widzicie ?

 

hm ja to widze tak , ze nie do konca rozumiem jak dokladnie ma dzialac dzialc maccumulate-outgoing-args,moze ktos bylby uprzejmym "kompilatorem" i powiedzial jak do dziala ?  :Smile:  dlatego nie bede sie wypowiadal bo nie wiem  :Smile: , wpisujac ja do swoich flag opieralem sie na opisie z mana gcc i wynikach testow z netu

nie wiem tez jaki zwiazek ma maccumuate-outgoing-args z FPU , a co do zwyklego sposobu liczenia , to zgadzam sie z tym w 100% ze nie trzeba korzystac na upartego z zaawansowancyh rozwiazan ( jesli mozna to tak w ogole nazwac ) , czasaem zamiast z FPU , mozna zrobic cos nie koniecznie z przecinkiem np. shl/shr`ujac cos o 8  , a na FPU mozna w tym czasie zrobic asynchornicznie cos innego.

pozdro:)

----------

## OBenY

No tak moj blad, -maccumulate-outgoing-args nie ma nic wspolnego z FPU, ale tak to zabrzmalio. Chodzi mi o to, ze przez wielu wyklinana opcja -mfpmath=sse,387 jest calkiem przydatna i przyspiesza kod, Gimp mi na tym startuje o (uwaga) 40% szybciej  :Smile: 

No wedlug mana z GCC to -maccumul... daje dobre efekty, ale ja ich nie odczulem ...

----------

## CyriC

Ktos moze zna jakies "magiczne" ustawienia flag dla durona 1,3 ??  :Smile: 

----------

## C1REX

 *CyriC wrote:*   

> Ktos moze zna jakies "magiczne" ustawienia flag dla durona 1,3 ?? :)

 

#CFLAGS

#CXXFLAGS

Żartuję.

 Nie ma czegoś takiego jak złote flagi. Różne programy różnie reagują i w zależności od używanych programów i posiadanego sprzętu różne flagi są lepsze lub gorsze. Poza tym są róźne cele optymalacji. Opymalizuję się np. pod kątem szybkości działania, szybkości odpalania, wielkości, zużycia RAMu itd.

http://www.coyotegulch.com/acovea/

Tu jest o automatycznym dobieraniu najlepszych flag do optymalizacji pod kątem szybkości odpalania softu.

----------

## OBenY

Flagi na dzis dla procesorow Intel Pentium4 na rdzeniu Northwood z 512 kB cache.

Trochje masochistyczne, ale od bootstrapa chodza i system smiga  :Smile: 

```
LD_ADD="-z combreloc"

LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s $LD_ADD"

DEFS="-DNDEBUG -DG_DISABLE_ASSERT"

DEFS_ADD="-DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"

CFLAGS="-O3 -march=pentium4 -mmmx -msse -msse2 -mfpmath=sse,387 -maccumulate-outgoing-args -momit-leaf-frame-pointer -frename-registers -finline-functions -fomit-frame-pointer -ftracer -fforce-addr -funroll-loops -fprefetch-loop-arrays -ffast-math -fmove-all-movables -pipe $DEFS $DEFS_ADD $LDFLAGS"
```

----------

## OBenY

Tak wiec przeprowadzilem kilka testow i dochodze do wniosku, ze mimo zachecajacych opinii oraz opisu w manualu gcc opcja -fmove-all-movables moze zwolnic kod - przyspieszenia nie daje, jk juz jest jakies, to na prawde bardzo niskie - zas w wiekszosci przpadkow szkodzi !

Sprawdzane na P4 Northwood 512 kB cache HT

----------

## sir_skiner

to ja mam pytanie natury egzystencjalnej  :Smile: 

jaki sens ma stosowanie roznych optymalizacji petli (np. -fprefetch-loop-arrays) razem  z -funroll-all-loops  :Question: 

----------

## fallow

w moim subiektywnym odczuciu jest mniej wiecej tak :

rozwijanie petli jest zazwyczaj oplacalne ale nie w kazdym przypadku.rozwijanie pelti w ktorych kod jest skomplikowany albo srednio-skompliokowany np. operacjach na macierzach-rozwiazywaniu ukladu rownan metoda gaussa ma sens , ale im petla dluzsza tym kod bardziej sie rozrasta wiec trzeba dobrac granice tej rozwijalnosci , wydaje mi sie ze rozwijanie krotkich petli nie przynosi odczuwalnych efektow,a b.krotkich aby tylko pozbyc sie skoku , nie ma sensu rozwijac bo mozna zastapic intrukcjami takimi jak rep movs(x) . optymalizacja polegajaca na usuwaniu zbednych instrukcji z petli tak jak np. wyrazenia ktore nie zmieniaja zadnych wartosci ma sens , bo oszczedza kilka taktow procesora w kazdym przebiegu,co przy wiele przebiagach moze byc odczuwalne.

tablicowanie petli ma chyba najbardziej odczuwalny sens jesli np. tablicuje sie dluzsze wyrazenia arytmetyczne, na 586 odczuwalne jest nawet ztablicowanie pierwiastkowania, tylko ze tablicowanie w zaleznosci od ilosci zmiennych w wyrazeniu i ilosci przebiegow zajmuje duzo pamieci.

co do tablicowania wyrazen arytmetycznych w petli ,  to nie wiem czy kompilator potrafi sam zrobic taka optymalizacje , ja zawsze robilem to po prostu w kodzie

pozdro  :Smile: 

----------

## sir_skiner

o czym ty do  mnie rozmawiasz?

jestem  zielony, pytalem o to po co optymalizowac petle skoro  sie je rozwija?

jesli odpowiedz padla to sorry - jak mowie nie jestem coderem

----------

## C1REX

M.in. robi się niektóre optymalizacje, mimo sa są one zawarte w "mutli-packach", że taki np. funroll-loops lub funroll-all-loops są filtrowane w ebuildach. Dlatego niektóre mniejsze, ale pewne flagi ustawia się oddzielnie.

Poza tym, funroll-all-loops nie ma zbyt dobrej opinii i jest raczej odradzany.

----------

## OBenY

Bo masakrycznie rozdmuchuje kod i robi binarki o wiele wolniejsze. Zwykle -funroll-loops styka  :Smile: 

----------

## Poe

Mam taki klopocik, gdyż wczoraj dowiedziałem się, ze mam błąd w zapisie flag. (zamiast CFLAGS mialem CSFLAG). miałem to od dłuzszego czasu. nic sie nie pluło o to. poptostu kompilowało. z jakimi flagami? nie wiem.. najprawdopodobniej z własnycmi (takie, jakie program miał 'w sobie' lub bez), no ale literowka poprawiona i przez to teraz nic nie moge skompilować. przy próbie kompilacji czegoklwiek wyskakuje mi:

```

>>> Source unpacked.

gtk2

jpeg

nls

 * Applying pornview-0.2.0_pre1-4.diff...                                 [ ok ]

creating cache ./config.cache

checking for GNU ld... /usr/bin/ld

checking if the linker (/usr/bin/ld) is GNU ld... yes

checking for a BSD compatible install... /bin/install -c

checking whether build environment is sane... yes

checking whether make sets ${MAKE}... yes

checking for working aclocal... found

checking for working autoconf... found

checking for working automake... found

checking for working autoheader... found

checking for working makeinfo... found

checking for strerror in -lcposix... no

checking for gcc... gcc

checking whether the C compiler (gcc -O2 -march=pentium4 -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer -fforce-add -fmove-all-movables -ffast-math -s -fstrength-reduce ) works... no

configure: error: installation or configuration problem: C compiler cannot create executables.

!!! ERROR: media-gfx/pornview-0.2.0_pre1 failed.

!!! Function econf, Line 365, Exitcode 1

!!! econf failed

```

tu wypisuje 'gcc -O2 -march=p4 itd, ale normalnie miałem wpisane O3, ale jest to samo. Dodam, że na flagach

```

-O2 -march=pentium4 -s

```

kompiluje bezproblemów. Flagi które nie chcą przejść wyglądaja tak:

```

CFLAGS=" -O3 -march=pentium4 -mfpmath-sse,387 -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer -fforce-add -fmove-all-movables -ffast-math -s -fstrength-reduce"

```

czy to wina zbyt ostrych flag, czy kolejnego błędu w zapisie?

PS

mam Celerona 2.0GHz

----------

## fallow

masz bledy w zapisie : 

```

zmnien -fforce-add na  -fforce-addr

i -mfpmath-sse,387  na   -mfpmath=sse,387

```

po tych zmianach ma byc ok  :Smile: 

----------

## fallow

male odswiezenie hehe ...

czy poza poprawiona i zwiekszona optymalizacja w gcc 3.5.0 maja byc jakies nowe flagi kompilacji zwiazane z optymalizacja  :Wink: , ktos ich uzywa ?  :Smile: 

jest tez snapshot z 2004-09-05 . trzeba by skompilowac ...

[EDIT]

hehe , znalazlem cos fajnego : http://www.dberlin.org/gccwiki/index.php/What%20will%20be%20in%203.5

[/EDIT]

pozdro  :Smile: 

----------

## lysek

moje flagi

```

CFLAGS="-O2 -falign-functions=4 -falign-jumps=4 -falign-loops=4 -maccumulate-outgoing-args -march=athlon-xp -pipe -mmmx -msse -m3dnow -fomit-frame-pointer -mfpmath=sse -ffast-math -masm=att"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j4"

ACCEPT_KEYWORDS="~x86"

```

----------

## Mroofka

Na początek chciałem serdecznie podziękować fallow za bardzo miłe przywitanie na forum.

A teraz do sprawy już trenuje ten program acovea i o ile się nie myle to to co się najcześciej powtarza w każdym z testów powinienem dodać do włanych flag cflags?

No i do tego drugie pytanie bo pomiomo że przeczytałem manala i howto to dalej nie wiem jak dokonać tego update'u po zmianie tychrze flag

emerge --nweuse (bo też się pozmieniały) system/ world -e (a może u) --deep

a tak właściwie to czy warto teraz się za to zabierać bo słyszałem że niedługo wychodzi nowy gentoo i wtedy odrazu można by uaktualnić poczęśći programy

P.S

fallow czy teraz też mnie zjedziesz np za to że nie ten topic  :Very Happy: , bo mogłem to dać równierz do oprogramowania ale po co 2 zaczynać ?

----------

## fallow

 *Mroofka wrote:*   

> P.S
> 
> fallow czy teraz też mnie zjedziesz np za to że nie ten topic , bo mogłem to dać równierz do oprogramowania ale po co 2 zaczynać ?

 

nie - wskazalem Ci przeciez ten watek, wiec moim zdaniem nie jest "nie ten"

EOT z mojej strony.

cheers  :Smile: 

----------

## nelchael

Watek przyklejony, bo ostatnio bylo pare pytan o flagi. C1REX sorki za profanacje tytulu  :Wink: 

----------

## Poe

A, skoro odswiezyliscie temat, to pochwale sie swoimi flagami, ktorych uzywam  :Smile: 

```

CFLAGS="-O3 -march=pentium4 -mfpmath=sse,387 -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays

 -fno-rerun-loop-opt -ftracer -fforce-addr -fmove-all-movables -ffast-math -s -fstrength-reduce -frename-registers "

CHOST="i686-pc-linux-gnu"

USE="alsa qt kde sse sse2 mmx nptl nptlonly gtk gtk2 -gnome -java -docs"

CXXFLAGS="${CFLAGS}"

LINGUAS="pl_PL"

ACCEPT_KEYWORDS="~x86"

```

 :Wink: 

----------

## nelchael

Ja mam bardzo "lagodne":

```
CFLAGS="-march=pentium4 -O2 -mmmx -msse -msse2 -mfpmath=sse -pipe"

CXXFLAGS="${CFLAGS}"
```

----------

## OBenY

Moze mnie ktos uswiadomic jak korzysta sie z acovea, bo musze sobie wygenerowac jakies sensowne flagi dla mojej maszyny  :Razz: 

Poe:

Mozesz owiedziec ile Ci startuja X'y albo cos w podobie - jakies OOo, czy KDE. Czy czasem -mfpmath=387,sse nie zmniejszylo predkosci wykonywania kodu ?

Jakie masz GCC ?

Pozatym - -frerun-loop-opt -fstrength-reduce oraz -frename-registers sa implikowane przez -O2 i -O3  :Smile: 

----------

## fallow

dla scislosci :

-frename-registers jest implikowane dopiero przez O3  :Razz:   :Smile: 

 *man gcc wrote:*   

> 
> 
> -O3
> 
> Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -fweb and -frename-registers options.
> ...

 

http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Optimize-Options.html#Optimize-Options

cheers.

----------

## Poe

 *OBenY wrote:*   

> 
> 
> Poe:
> 
> Mozesz owiedziec ile Ci startuja X'y albo cos w podobie - jakies OOo, czy KDE. Czy czasem -mfpmath=387,sse nie zmniejszylo predkosci wykonywania kodu ?
> ...

 

Hmm... teraz Ci dokladnie nie powiem, bo jestem w trakcie kompilowania nowego gentoo, starego juz nie mam, ale to bylo mniej wiecej ~7sekund wraz z enlightenmentem.. ~7sekund od startx [enter] do pelnej gotowosci enlightenmenta. nie zauwazylem spadku wykonywania

 *OBenY wrote:*   

> 
> 
> Jakie masz GCC ?
> 
> 

 

3.4.3

 *OBenY wrote:*   

> 
> 
> Pozatym - -frerun-loop-opt -fstrength-reduce oraz -frename-registers sa implikowane przez -O2 i -O3 

 

To najwidoczniej bede musial je wywalic  :Wink:  chociaz nie widzialem zeby cos przez to sie sypalo

----------

## fallow

ja poslugiwalem sie tym co do acovea : 

https://forums.gentoo.org/viewtopic.php?t=157108

w tym jest od razu do rzeczy :

https://forums.gentoo.org/viewtopic.php?t=250250

cheers.

----------

## k4sbasia

Przejżałem te posty i jakoś niedopatrzyłem się flag pod P4 Prescot z HT

Jeśli ktoś używawa tego procka i ma gentoo byłbym bardzo wdzięczny gdyby mógł napisać co używa co poleca 

Ja jestem świeżym użytkownikiem Gentoo i dopiero szukam odpowiednich flag, bardzo chętnie przemyśle sugestie osoby mądrzejszej w tych sprawach odemnie

Pozdrawiam!

----------

## nelchael

Normalne flagi dla P4 + SMP i HT w jajku.

Dla przykladu: 

```
CFLAGS="-march=pentium4 -O2 -mmmx -msse -msse2 -mfpmath=sse -pipe"

CXXFLAGS="${CFLAGS}"
```

----------

## k4sbasia

No tak, to jest sprawa wmiarę oczywista,

Ja raczej czekam na kogoś, kto ustawić troche ostrzejsze flagi, a system działa mu na nich stabilnie

----------

## OBenY

Ja mam prescotta i mam takie flagi, ale czy sa one najoptymalniejsze, to nie powiedzialbym, staralem sie zas by takie byly (w chwili obecnej znow testuje -mfpmath=387,sse oraz -maccumulate-outgoing-args  :Smile:  )

```

CFLAGS="-O3 -mtune=prescott -march=prescott -mmmx -msse2 -msse3 -mfpmath=387,sse -maccumulate-outgoing-args -funroll-loops -fprefetch-loop-arrays -fomit-frame-pointer -ftracer -fforce-addr -ffast-math -pipe -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -funit-at-a-time -s"

CXXFLAGS="-O3 -mtune=prescott -march=prescott -mmmx -msse2 -msse3 -mfpmath=387,sse -maccumulate-outgoing-args -funroll-loops -fprefetch-loop-arrays -momit-leaf-frame-pointer -ftracer -fforce-addr -ffast-math -pipe -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -funit-at-a-time -s"

LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common"

```

----------

## k4sbasia

Ja mam coś takiego:

```
CFLAGS="-02 -mtune=prescott -march=prescott -mmx -msse2 -msse3 -mfpmath=sse -ffast-math -pipe -fomit-frame-pointer ${LDFLAGS} -DNDEBUG -DG_DISABLE_ASSERT"

CXXFLAGS=${CFLAGS}

LDFLAGS="-s -z combreloc"

```

Może widzi ktoś coś co piwinienem tutaj zmienić

----------

## nelchael

Jak korzystasz z -march to -mtune jest niepotrzebne.

----------

## OBenY

Wiem o tym, ale profilaktycznie trzymam we flagach, co czemu nie  :Razz: 

Choc pewnie zaraz wywale  :Razz: 

----------

## dziegiel

Jakie flagi polecacie dla Pentium II 400MHz ??

----------

## OBenY

Ja w chwili obecnej na pentium2 433MHz mam takie flagi (maszyna serwerowa):

CFLAGS="-O2 -mcpu=pentium2 -march=pentium2 -fomit-frame-pointer -ftracer -fforce-addr -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -s "

CXXFLAGS="-O2 -mcpu=pentium2 -march=pentium2 -momit-leaf-frame-pointer -ftracer -fforce-addr -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -s "

----------

## ai

moje flagi na p4 3.06 : 

CFLAGS="--param max-unrolled-insns=16 -fsingle-precision-constant -DNO_DEBUG -g0 -fno-if-conversion2 -fcse-follow-jumps -fgcse -frerun-cse-after-loop -freorder-functions -minline-all-stringops -mno-align-stringops -foptimize-sibling-calls -ffast-math -finline-limit=4096 -march=pentium4 -fomit-frame-pointer -pipe -ftracer -O2 -fmerge-all-constants -fprefetch-loop-arrays"

CXXFLAGS="-fabi-version=0 -ffunction-sections -DNO_DEBUG -g0 --param max-unrolled-insns=16 -funroll-loops -ffast-math -finline-limit=4096 -march=pentium4 -fomit-frame-pointer -fprefetch-loop-arrays -pipe -fsingle-precision-constant -ftracer -O2 -fmerge-all-constants -fpermissive -fno-enforce-eh-specs -fvisibility-inlines-hidden" 

LDFLAGS="-Wl,-O1" 

Dosc sporo wzialem z forum, jak ktos tez mial p4 ;]

----------

## Poe

no no, ai, 3/4 wpisow z Twoich flag w życiu nie widziałem :]

----------

## fallow

 *ai wrote:*   

> moje flagi na p4 3.06 : 
> 
> CFLAGS="--param max-unrolled-insns=16 -fsingle-precision-constant -DNO_DEBUG -g0 -fno-if-conversion2 -fcse-follow-jumps -fgcse -frerun-cse-after-loop -freorder-functions -minline-all-stringops -mno-align-stringops -foptimize-sibling-calls -ffast-math -finline-limit=4096 -march=pentium4 -fomit-frame-pointer -pipe -ftracer -O2 -fmerge-all-constants -fprefetch-loop-arrays"
> 
> CXXFLAGS="-fabi-version=0 -ffunction-sections -DNO_DEBUG -g0 --param max-unrolled-insns=16 -funroll-loops -ffast-math -finline-limit=4096 -march=pentium4 -fomit-frame-pointer -fprefetch-loop-arrays -pipe -fsingle-precision-constant -ftracer -O2 -fmerge-all-constants -fpermissive -fno-enforce-eh-specs -fvisibility-inlines-hidden" 
> ...

 

 ok , nie chce tutaj udowadniac racji , czy flame`owac ale po prostu pokazac ze nalezy czytac man gcc , bo da sie zauwarzac tendencje , ze "im wiecej flag tym lepiej "  :Smile:  , co nie znaczy , ze wszystkie te flagi sa zle. bo niektore sa bardzo ciekawe  :Smile: 

poziom O2 implikuje takie flagi ktorych uzyles , czyli ich dodanie po prostu jest zbedne 

bo robi to samo napisanie "-O2" : 

 *O2 zawiera w sobie wrote:*   

> 
> 
>  -fcse-follow-jumps
> 
>  -fgcse
> ...

 

```
-fabi-version=0
```

 troche dziwne ustawienie poniewaz jest tu wiele wlaczonych optymizacji , domyslna wersje C++ ABI jest 2 czyli najnowsza , 0 jest starsza ale powinna zapewnic najmniejsze ryzyko wystapienia bledu.

```
-fpermissive
```

 imho ciekawa opcja dla C++, powzwala przeksztalca niektore bledy w ostrzezenia i kompilowac taki kod, jednak pozniej podczas uruchomienia moze sie to konczyc roznie  :Smile: 

mysle , ze reszte najlepiej bez watpliwosci opisze man gcc  :Smile: 

```
fno-enforce-eh-specs
```

 *man gcc wrote:*   

> 
> 
> Don't check for violation of exception specifications at runtime. This option violates the C++ standard, but may be useful for reducing code size in production builds, much like defining NDEBUG. The compiler will still optimize based on the exception specifications.
> 
> 

 

```
-finline-limit=4096
```

 *man gcc wrote:*   

> 
> 
> The default value of n is 600. Increasing this value can result in more inlined code at the cost of compilation time and memory consumption. Decreasing usually makes the compilation faster and less code will be inlined (which presumably means slower programs). This option is particularly useful for programs that use inlining heavily such as those based on recursive templates with C++.
> 
> 

 

```
-fmerge-all-constants
```

 *man gcc wrote:*   

> 
> 
> This option implies -fmerge-constants. In addition to -fmerge-constants this considers e.g. even constant initialized arrays or initialized constant variables with integral or floating point types. Languages like C or C++ require each non-automatic variable to have distinct location, so using this option will result in non-conforming behavior.
> 
> 

 

```
-mno-align-stringops
```

 *man gcc wrote:*   

> 
> 
> Do not align destination of inlined string operations. This switch reduces code size and improves performance in case the destination is already aligned, but GCC doesn't know about it.
> 
> 

 

reszty juz mi sie nie chcialo  :Razz:   :Smile: 

cheers.

----------

## OBenY

Łohohoho to zes w kosmos wylecial  :Smile: 

Te flagi sa hmmm wyszukane, bede musial obadac mana  :Smile: 

Procek na rdzeniu Northwood, czy Prescott ?

Nie rozumiem, czemu tak duzo inline'ujesz, mozesz mnie oswiecic?

----------

## tdi

```
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer -ffast-math -msse2 -falign-functions=64  "

```

dla pentium m na gcc 3.3.5

----------

## m@niac!

ja o flagach za duzego pojecia nie mam, wrecz nie mam wogole, jednak natchniony tym temacikiem postanowilem cos sobie poustawiac, bo samo -march -O2 -fomit-frame-pointer razilo pustka. Z tego co widzialem na forum powybieralem kilka i oto moj zestaw:

```
CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -maccumulate-outgoing-args -fmove-all-movables -pipe -s -ftracer -falign-loops -ffast-math -fprefetch-loop-arrays -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -DNDEBUG -DG_DISABLE_ASSERT"
```

Czy moglby ktos powiedziec czy jest on w miare poprawny i nie bedzie z tym problemow?

(athlon xp-m 2500+@3400+)

----------

## yoshi314

mam takie pytanie do C(XX)FLAGS - jakie flagi dac zeby miec kod ktory pojdzie na kazdym procesorze rodziny i686?

bralem wczesniej -mtune=i686 ale gcc ostrzega mnie ze ten parametr juz nie obowiazuje. czy -march=i686 to dobry wybor?( z dokumentacji wynika ze oznacza to pentium pro, nie wiem czy na pewno pojdzie na kazdym procesorze i686)

aha, jak analogicznie dobrac flagi dla procesorow rodziny i586 i szybszych?

----------

## kontomen

 *yoshi314 wrote:*   

> mam takie pytanie do C(XX)FLAGS - jakie flagi dac zeby miec kod ktory pojdzie na kazdym procesorze rodziny i686?
> 
> bralem wczesniej -mtune=i686 ale gcc ostrzega mnie ze ten parametr juz nie obowiazuje. czy -march=i686 to dobry wybor?( z dokumentacji wynika ze oznacza to pentium pro, nie wiem czy na pewno pojdzie na kazdym procesorze i686)
> 
> aha, jak analogicznie dobrac flagi dla procesorow rodziny i586 i szybszych?

 

Możesz we flagach używać -march=XXX . Oznacza to kompilację pod konkretną architekturę, ale z pełnym zerwaniem kompatybilności w dół. Jeśli chcesz pod i686 to -march=i686 jest odpowiednie, ale nie odpalisz wtedy programu (albo odpalisz, ale będzie się dziwnie zachowywał) na i586. Jeśli zależy Ci na jakiejś tam (bo z mojego doświadczenia wynika, że średnio to wychodzi) kompatybilności ze starszymi architekturami, to nie pisz -march tylko -mcpu.

----------

## yoshi314

 *kontomen wrote:*   

> Jeśli zależy Ci na jakiejś tam (bo z mojego doświadczenia wynika, że średnio to wychodzi) kompatybilności ze starszymi architekturami, to nie pisz -march tylko -mcpu.

 

martwi mnie ze gcc (3.4.3 najnowsze bodajze) pisze mi -mpcu is obsolete use -march or -mtune instead

jak zmienie na -mtune to daje mi -mtune is obsolete use -march or -mcpu instead

niezle jaja  :Very Happy: 

----------

## n0rbi666

heh mam problema ....

zainspirowany tym tematem, i tym, postanowilem sie pobawic flagami w gentoo (Wczesniej mialem tylko -0s -mcpu=athlon-xp -pipe -s    sami widzicie, ze kicha i nieprzemyslane)

to zaczalem troche czytac, i bawic sie, i sprawdzilem ze taki

```
CFLAGS="-O3 -mcpu=athlon-xp -march=athlon-xp -mmmx -m3dnow -msse -mfpmath=sse,387 -pipe -s -fforce-addr -fforce-mem -fomit-frame-pointer -funroll-loops -funroll-all-loops -frerun-cse-after-loop -frerun-loop-opt -fexpensive-optimizations -finline-functions -falign-jumps=4 -falign-loops=4 -falign-functions=64 -foptimize-sibling-calls -ffast-math -fno-trapping-math -fprefetch-loop-arrays -malign-double -maccumulate-outgoing-args -fmove-all-movables -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS" 
```

zestaw sie nawet sprawowal w tamtym temacie o testowaniu flag

to dodalem do make.conf, emerge gcc, emerge glibc, emerge binutils i emerge coreutils - i sie zaczely schody ....

juz nawet kadu nie moglem kompilowac (wywalalo przy make), a jak chcialem cos emergowac, to pisalo cos typu , ze plik juz zostal zamieniony ...

to podlamany, ale instalka od nowa, make.conf skopiowalem , bootstrap, emerge system - i znowu ten blad ...

wiec : gdzie jest blad w tych flagach (nie liczac tego, ze funroll-all-loops implikuje funroll-loops  :Wink:  )?  :Sad:  bo mana gcc nie mam (siedze pod windowsami), szukac - szukalem, ale nie wyszukalem nic ciekawego, za chwile ide dalej szukac, ale moze ktos tu od razu powie co jest zle, co sie gryzie ? kumpal podpowiedzial, ze to moze -ffast-math z -fno-trapping-math , ale czy to na pewno to ? bo nie chce znowu tracic 3h na bootstrap i okaze sie ze i tak nie dziala ... 

z gory thx za odpowiedz  :Smile: 

----------

## wojtek

Ja tylko moge dodac od siebie do calego tego watku, ze jesli ktos uzywa Athlona wspierajacego SSE ale nie wspierajacego SSE2 (np. wszystkie 32-bitowe wersje) to nie powinien uzywac opcji -mfpmath=sse. Wiaze sie to z problemem malej precyzji obliczen zmiennoprzecinkowych SSE i mozliwymi problemami z programami, ktore sa na nia wrazliwe. Jednym z nich jest np. kodek Ogg Vorbis, ktory po skompilowaniu z ta opcja generuje "metaliczny" dzwiek (w kazdym razie dla minie byl on dosc nieprzyjemny), po powrocie do klasycznego x87 problem zniknal.

----------

## zieloo

 *n0rbi666 wrote:*   

> heh mam problema ....
> 
> zainspirowany tym tematem, i tym, postanowilem sie pobawic flagami w gentoo (Wczesniej mialem tylko -0s -mcpu=athlon-xp -pipe -s    sami widzicie, ze kicha i nieprzemyslane)
> 
> to zaczalem troche czytac, i bawic sie, i sprawdzilem ze taki
> ...

 

Wiesz co kazda z tych flag robi? Conajmniej kilka z nich znana jest z tego nie dopuszcza nawet poprawnej kompilacji wybranych pakietow. A to, ze do tej pory ci sie udawało to chyba przypadek...

----------

## n0rbi666

zieloo - spoko, thx za odp, ale chwila szukania i znalazlem, ze -maling-double sie gryzie z coreutils  :Wink: 

potem mialem tylko problemy z literowka, ale juz jestem po instalce gentoo z flagami 

```
CFLAGS="-O3 -mcpu=athlon-xp -march=athlon-xp -mmmx -m3dnow -msse -mfpmath=sse,387 -pipe -s -fforce-addr -fomit-frame-pointer -funroll-all-loops -frerun-loop-opt -fexpensive-optimizations -finline-functions -falign-jumps=4 -falign-loops=4 -falign-functions=64 -foptimize-sibling-calls -ffast-math -fprefetch-loop-arrays -maccumulate-outgoing-args -fmove-all-movables -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
```

i na razie dziala, musze jeszcze tylko zemergowac KDE i juz bedzie ok  :Wink: 

----------

## zieloo

-DG_DISABLE_ASSERT -fforce-addr -ffast-math potrafiły u mnie sporo popsuc. Tez sie troche bawiłem flagami, ale wierz badz nie, ale naprawde nie warto ich ustawiac w sposob, ktory przedstawiles (i zdecydowanie nie kompilowac nimi całego systemu! :Smile:  ), lepiej zostawic spokojniejsze - zaoszczedzisz sobie ładnych parę godzin nerwowki przy szukaniu co poszło nie tak i dlaczego masz por raz dziesiaty 'Compilation failed'. Mimo to,jesli ci się to uda przy przyzwoitym wzroscie wydajnosci, to gratuluje! :Razz: 

----------

## n0rbi666

Jak nie bedzie dzialac - to reinstall gentoo  :Wink:  (ale mam nadzieje ze bedzie  :Wink:  )

-ffast-math z tego co patrzylem, niektorzy maja i jakos im dziala, wiem ze potrafi pochrzanic duzo, ale na razie u mnie smiga  :Wink: 

-DG_DISABLE_ASSERT - hmm, o tym nie slyszalem, musze sie dokalndiej przyjrzec  :Wink: 

-fforce-addr - wyczytalem jako polecane dla athlona-xp, ale tez wiecej niz man gcc sie nie przygladalem ... moze sie kopac, moze nie

na razie jestem tylko niezadowolony z -funroll-all-loops, chyba lepszym wyborem byloby -funroll-loops, ale zobaczymy jak bedzie na tym smigac, a potem pomyslimy nad jakims programem, ktory bedzie mierzyl wydajnosc flag  :Wink: 

a tak pozatym - to wszystko zalezy od tego, jakie programy kompilujemy ... niektore moga czegos nie lubiec (np -maling-double i coreutils) , a niektore moga cos lubic  :Wink: 

podziele sie wrazeniami, jak zemerguje kde ;]

----------

## zieloo

Postaw Gentoo na dwoch identycznych kompach - jeden z -march -pipe -O2 i drugi z twoimi flagami i porownaj szybkosc ich dzialania... Czesto nawet nie widac roznicy, a system jest o wiele wolniejszy niz gdyby był postawiony na wspomnianych flagach 'standardowych'.

----------

## n0rbi666

zieloo - heh, az tak barzdo mi sie nie nudzi  :Wink:  (chociaz moze kiedys ...  :Razz:  )

ale wczesniej mialem zle ustawione flagi, -Os i wogole, wiec stwierdzilem ze czas na zmiany  :Wink: 

i co do szybkosci, to wczesniej podalem stronke z tym testing your cflags, i na tym programiku roznica byla, w seti@home tez roznica na + byla... 

jak cos, to zawsze mozna dac emerge -e world ze standardowymi flagami, a i tak mi wszczesniej system sie popsul, wiec nic nie trace  :Smile: 

----------

## zieloo

Jestes pewny co do: -finline-functions?

----------

## n0rbi666

hmm to jest wlaczane na poziomie -O3, wiem, na poczatku przeoczylem to, ale to oprocz tego,z e brzydko wyglada, niczego nie zmienia  :Wink: 

----------

## C1REX

 *zieloo wrote:*   

> Postaw Gentoo na dwoch identycznych kompach - jeden z -march -pipe -O2 i drugi z twoimi flagami i porownaj szybkosc ich dzialania... Czesto nawet nie widac roznicy, a system jest o wiele wolniejszy niz gdyby był postawiony na wspomnianych flagach 'standardowych'.

 

Po wielu testach na własnym kompie i wynikach testów wydajnościowych znajdywanych w Internecie sam dochodzę do tego wniosku. Bardzo łatwo przekombinować. 

Nalezy też pamiętać, że optymalizacja pod kątem szybkości działania, to jeszcze nie jest optymalizacja pod kątem więlkości czy szybkości odpalania.

Moje flagi na dziś, a które moga i tak wkrótce zostać dodatkowo okrojone.

```
CFLAGS="-O3 -march=athlon-tbird -fomit-frame-pointer -ftracer -fforce-addr -ffast-math -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -s"

CXXFLAGS="-O3 -march=athlon-tbird -momit-leaf-frame-pointer -ftracer -fforce-addr -ffast-math -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -s"
```

Wydają się bezpieczne i osobiście nie sprawiły mi najmniejszych problemów. -ffast-math mam ze względu na znaczący wzrost wydajności w wielu testowanych programach. 

Zastanawiam sie nad zmianą 03 na 02, wywaleniem -s i dodaniem -pipe.

Mam też pytanie. Czy -pipe i -s moga w jakiś sposób zaszkodzić, czy raczej są to flagi należace do grupy pewniaków?

----------

## n0rbi666

Z tego co czytalem -pipe i -s sa bezpieczne, -pipe nie ma wplywu na kod tylko na sam proces kompilacji, a -s :

 *Quote:*   

> -s  Remove all symbol table and relocation information from the executable. 

 

I ja doszedlem do wniosku, ze jednak nie oplaca sie miec zbyt agresywnych flag, bo do nizcego to nie prowadzi, wiec na razie mam takie :

```
CFLAGS="-O3 -march=athlon-xp -mmmx -m3dnow -msse -mfpmath=sse -pipe -s -ftracer -fomit-frame-pointer -funroll-loops -ffast-math -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
```

sprzet to athlon xp2000+ @ 1980mHz

C1REX - czy -fforce-addr jest uznawana za bezpieczna ? bo nie wiem, czy ona u mnie nie powodowala "naruszenie ochrony pamieci" ...

----------

## C1REX

 *n0rbi666 wrote:*   

> 
> 
> C1REX - czy -fforce-addr jest uznawana za bezpieczna ? bo nie wiem, czy ona u mnie nie powodowala "naruszenie ochrony pamieci" ...

 

Znawcą żadnym nie jestem. Moge jedynie powiedzieć, że niedawno skompilował mi się cały system na ~x86 z wymienioną flagą plus cały dodatkowy soft i nie miałem żadnych problemów. Kwestia jej opłacalności to już zupełnie inna sprawa.

----------

## zieloo

Nie zawsze...

Zdarza się, że ta flaga może nieźle nam nabruździć w systemie. Avoid, chyba ze masz duzo czasu...

----------

## arsen

go go go ricers ricers go   :Wink: 

----------

## zieloo

 *arsen wrote:*   

> go go go ricers ricers go  

 

A jasne, ze GO GO GO! Jeśli jest taka możliwość to dlaczego by nie?! :Razz: 

----------

## fallow

 *zieloo wrote:*   

>  *arsen wrote:*   go go go ricers ricers go   
> 
> A jasne, ze GO GO GO! Jeśli jest taka możliwość to dlaczego by nie?!

 

then go go go  :Smile:  go for it  :Smile: 

cheers.

----------

## n0rbi666

C1REX - ja aktualnie tez mam wiekszosc systemu przekompilowane z ta flaga, ale jednak cos sie kopalo np z gftp (albo kftpget, nie pamietam) , wiec usunalem zbedne i zbyt agresywne flagi i powoli wszystko kompiluje jeszcze raz  :Smile: 

tylko macie moze jakis dobry program, typu prime95, ktory by pozwalal zmierzyc co nam daja te optymalizacje ? bo niesty zrodelek do prime nie mam  :Sad: 

----------

## OBenY

Ja mam caly system kompilowany od okolo 3 lat i nigdy problemow najmniejszych nie mialem. Jedyna rzecza jakiej nie da sie z ta flaga skompilowac, to kernel, cala reszta works fine  :Smile: 

----------

## zieloo

 *OBenY wrote:*   

> Jedyna rzecza jakiej nie da sie z ta flaga skompilowac, to kernel, cala reszta works fine 

 

Coś to oznacza.

----------

## Poe

kernel przypadkiem nie kompiluje sie na wlasnych flagach?  :Neutral: 

----------

## pwe

ale mozna w 'pewnym' pliku podac flagi dla kernela, bo masz racje, on olewa make.conf  :Smile: 

----------

## n0rbi666

w nitro-sources mozna pobawic sie flagami kernela  :Smile: 

a ja wlasnie mialem naruszenie pamieci w slypheed-claws, przekompilowalem - i nic, zjechalem z flagami do -O2 -march -pipe -s - i dziala ... ma ktos takie problemy ? dodam, ze uzywam slypheed-claws z cvs-owego ebuilda, z supportem dla gtk2  :Smile: 

----------

## OBenY

Upsik, zapomnialem ze chodzilo mi o jaderko 2.4.x, dawno temu, z modyfikacjami Makefile by me  :Smile: 

----------

## Crenshaw

 *C1REX wrote:*   

>  *n0rbi666 wrote:*   
> 
> C1REX - czy -fforce-addr jest uznawana za bezpieczna ? bo nie wiem, czy ona u mnie nie powodowala "naruszenie ochrony pamieci" ... 
> 
> Znawcą żadnym nie jestem. Moge jedynie powiedzieć, że niedawno skompilował mi się cały system na ~x86 z wymienioną flagą plus cały dodatkowy soft i nie miałem żadnych problemów. Kwestia jej opłacalności to już zupełnie inna sprawa.

 

Ja jade na tym od poczatku mam troche pakietow z ~x86 i nic sie nigdy nie psulo.

----------

## OBenY

IHA wyszlo gcc 4.0 zacznamy optymalizowac  :Smile: 

Ciekawe kiedy wejdzie do portage - przydaloby sie  :Smile:  Ja juz chce testowac system na tym  :Razz: 

----------

## totencham

 *OBenY wrote:*   

> IHA wyszlo gcc 4.0 zacznamy optymalizowac 
> 
> Ciekawe kiedy wejdzie do portage - przydaloby sie  Ja juz chce testowac system na tym 

 

Wg http://gentoo-portage.com/sys-devel/gcc nowe gcc już jest w portage  :Twisted Evil: 

----------

## Piecia

A mam pytanie jak się mają flagi dla icc? 

1)Niby icc kożysta z innych flag niż gcc 

2)USE="icc" użyj icc jeśli pakiet go wspiera aczkolwiek w oryginale brzmi to trochę inaczej

Czy mając icc dalej jest potrzebny gcc? Jeśli nie to flagi wystarczy normalnie wrzucić do make.conf, a jak nie to jak ustawić  poprawnie CFLAGS i CXXFLAGS aby się nie "gryzły"? 

źródło

----------

## Ramz

Jakie flagi powinienem ustawicw w make .conf dla GCC 3.3.5 i procesora Pentium IV Prescott . Wiem ze procesor posiada sse, sse2 i sse3 i chyba 3dnow. Wiem tez ze istnieje march=prescott tyle ze nie wiem dla ktorej wersji GCC.

Na stronie GCC znalazlem tez flagi:

-mmmx

-mno-mmx

-msse

-mno-sse

-msse2

-mno-sse2

-msse3

-mno-sse3

-m3dnow

-mno-3dnow

do czego one sluza i dlaczego jest przed nimi przedrostek ml ub mno ? Czy to oznacza wersje mobilne procesora ??

PS. Opisu do tych flag nie znalazlem.

----------

## tomekb

```
man gcc
```

  :Smile:  i watek o flagach jest tu: https://forums.gentoo.org/viewtopic-p-1173760.html#1173760, osobiscie polecilbym ci ustawic bezpieczne, czyli " -O2 -march=pentium4 -pipe -msse -msse2 -msse3" 3dnow? watpie, no chyba ze te nowe  :Confused: 

----------

## karol

```
CFLAGS="-O3 -march=prescott -pipe -mmmx -msse -msse2 -msse3"
```

Ja osobiscie mam takie i nie moge powiedziec aby byly zawodne...

Co do gcc to albo man gcc lub http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options

----------

## OBenY

Ja od dosc dawna experymentuje z flagami dla Prescotta i moim zdaniem najbardziej efektywnym zestawem, gwarantujacym przyzwoita optymalizacje dla bardzo szerokiego grona programow jest nastepujacy:

Podaje poszczegolne flagi pogrupowane:

Optymalizacje Linkera:

LDFLAGS="-Wl,-O1,--sort-common -s"

(zapewnia optymalizacje juz laczonego kodu wynikowego), dla odwaznych, ktorzy chca po experymentowac mozna dodac flage "--as-needed"  zmniejszajaca narzut przy ladowaniu programu redukujac liczbe ladowanych bibliotek na starcie (Generalnie Mozilla + programy na QT + Wszystko oparte na toolkicie roznym od GTK-1 powinno dzialac, jednakze sa aplikacje wylamujace sie od tej reguly, ktore niestety albo sie nie kompiluja albo dzialaja blednie :/)

Optymalizacje ogolne:

DEFS="-DNDEBUG -DG_DISABLE_ASSERT -DNO_DEBUG -DNDEBUG"

(Wymuszenie wylaczenia informacji debugujacych z kodu (troche odchudza niektore binarki)

COMMON="-O2 -g0 -ftracer -ffast-math -fforce-addr" 

(optymalizacje ogolnie pozyteczne i bezpieczne (z wyjatekiem -ffast-math, ktore uposledza perlowe obliczanie wyrazen arytmetycznych, a ze mi to NIC A NIC nie przeszkadza, to stosuje, bo daje ZNACZNY wzrost wydajnosci, wiele osob poleca -O3 dla Prescotta, jednakze ta optymalizacja wiecej psuje, niz niej poztyku, wiec zostalem przy -O2)

ARCHITECTURE="-march=prescott -mfpmath=sse -maccumulate-outgoing-args" (obowiazkowe optymalizacje dla procesora - nie zmieniac  :Smile:  )

Wywolanie wszystkiego w kupie:

CFLAGS="$COMMON $ARCHITECTURE -fomit-frame-pointer $DEFS -s"

CXXFLAGS="$COMMON $ARCHITECTURE -momit-leaf-frame-pointer $DEFS -s" (-fomit-frame-pointer rozpycha kod na Intelach, na AMD nie, wiec lepiej dac -momit-leaf-frame-pointer, ktory zachowuje sie podobnie jak ta druga flaga, lecz nie rozpycha nadmiernie kodu  :Smile: 

Dla gcc4 jest jeszcze pare fajnych optymalizacji, ale niestety jeszcze nie da sie go uzywac :/

BTW zaktualizuj gcc do 3.4, bo znacznie lepszy kod generuje...

----------

## fallow

watek o Flagach dla Prescotta dodany do naszego duzego o (C/CXX)FLAGS.

wystarczy przeczytac Polish Faq by wiedziec ze istnieje taki watek : https://forums.gentoo.org/viewtopic-p-2345668.html#2345668

cheers.

----------

## Raku

Mam pytanie odnosnie tego, co zawiera w sobie flaga -march

wiele osob pisalo: po co ci -sse, -3dnow i takie tam inne, skoro to wszystko automatycznie ustawia flaga -march=procesor ?

no i probuje sie dogrzebac w dokumentacji gcc, co dokladnie ustawia -march, i oprocz krotkiej wzmianki, ze -mcpu, nie znalazlem niczego innego.

Powstal wiec problem: czy ktos mi wskaze zrodlo, gdzie pisze co ustawia -march, czy mam recznie dopisywac flagi typu -mmmx -m3dnow (czy jak to tam leci dla mojego procesora)

EDIT:

OBenY:

 *Quote:*   

> 
> 
> DEFS="-DNDEBUG -DG_DISABLE_ASSERT -DNO_DEBUG -DNDEBUG" 
> 
> 

 

czy powtórzenie -DNDEBUG jest u ciebie zamierzone?

----------

## OBenY

raku: ups faktycznie mam powtorzona flage - dzieki za info  :Smile: 

Flaga -march implikuje wszystkie flagi wlaczajace optymalizacje specyficzne dla procesora. Tj jezeli procesor wspiera sse3, to wlacza sse3, jak 3dnow, to 3dnow. Generalnie -march mowi jakie rozszerzenia i instrukcje potrafi wykonac oraz uklada instrukcje w takiej kolejnosci by na tym procesorze wykonywane byly najszybciej czyli rowniez implikuje -mcpu/-mtune  :Smile:  pozostale flagi typu -mfpmath=... to juz trzeba recznie ustawic.

----------

## qubus

czy moge zastosować flagę -march=athlon gdy posiadam procesor AMD Duron 700 ?? czy raczej nie ??

----------

## Crenshaw

Na gorze jest taki topic FAQ ktory jest przyklejony... tam znajdziesz ten link do interesujacego Ciebie tematu.

----------

## qubus

Nie moge znaleźć :/ to chyba ze zmeczenia, weź podaj jak możesz, thx

----------

## muchar

Wszystko na tacy trzeba podawać? Wystarczy spróbować, rozejrzeć się czy też skorzystać z SEARCH.

Masz: https://forums.gentoo.org/viewtopic-t-177544.html

Zapewne o to mu chodzi.

----------

## wuja

Żeby taca była pełniejsza   :Very Happy:  http://gentoo-wiki.com/Safe_Cflags#Duron_.28AMD.29

----------

## fallow

kolejny zmergowany TOPIC !!!

UZYWAJ SEARCH , CZYTAJ POLISH FAQ. wystarczy tam spojrzec by wiedziec ze tu nalezy pisac.

----------

## C1REX

 *OBenY wrote:*   

> Ja od dosc dawna experymentuje z flagami dla Prescotta i moim zdaniem najbardziej efektywnym zestawem, gwarantujacym przyzwoita optymalizacje dla bardzo szerokiego grona programow jest nastepujacy:
> 
> Podaje poszczegolne flagi pogrupowane:
> 
> Optymalizacje Linkera:
> ...

 

Robi wrażenie. Bardzo podoba mi taka segregacja i dobór flag. Już sobie skopiowałem większość edytując pod mego duronka : )

Ostatnio pojawiły się u mnie pewne problemy z kompilacją. Okazało się jednak, że to wina sprzętu, a nie flag. (EDITED)

----------

## karaluch

Wybaczcie za maly oftopic ale musze cos powiedziec, jestem nowy, i w gento i w linuxie wiec do budowania make podchodze raczej z umiaremi i staram sie kopiowac dobre pomysly innych niz samemu eksperymentowac i zastanawiac sie co jest lepsze - przynam sie ze - wiekszosc flag to dla mnie bajka ale to co mi sie nasuwa od razu to kewstia tego tematu! To juz 8 stron, a pewnie bedzie wiecej, centrino, prescotty, a64 i wiele innych wiec bedzie masakra aby cos wylowic dla siebie, bo w sumie niedlugo bedzie problem aby wogole dojsc kto z kim na jaki temat dyskutuje wiec JA!  :Smile:  wnioskuje o otworzenie nowych tematow dla poszczegolnych procesorow (oczywiscie z rozsadkiem) np. Athlon (dotyczylby: tbird,xp,barton,duron,sempron), Athlon64, Pentium 4 (pentium4, pentium 4 ht, pentium 4 M, prescott, celeron), Pentium64, Pentium 3, Pentium 2 i inne (alpha,risc...). Idac ta droga temat moglby wygladac tak np. "CFLAGS - Athlon".

Ale egzekwo istnialby temat "CFLAGS" gdzie moznaby rozmawiac nad znaczeniem poszczegolnych flag i powiedzmy pierwszy post bylby spisem wszystkich flag nad jakimi sie dyskutuje (cos jak polis faq)

----------

## Belliash

A ja mam takie na Athlonie64 3000+ Venice:

```
CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=athlon64 -mtune=athlon64 -O2 -s -pipe -fomit-frame-pointer -mfpmath=sse,387 -msse -msse2 -msse3 -mmmx -m3dnow -ffast-math -fpeel-loops -mno-align-stringops -ftracer -finline-limit=1200 -fno-ident -fforce-addr -fprefetch-loop-arrays -funroll-loops -funswitch-loops -ftree-vectorize -momit-leaf-frame-pointer -DNDEBUG -DG_DISABLE_ASSERT -DNO_DEBUG"

CXXFLAGS="${CFLAGS} -fpermissive -fno-enforce-eh-specs"

LDFLAGS="-Wl,-O1,--enable-new-dtags,--sort-common -s"

PORTAGE_STRIP_FLAGS="--strip-all --discard-all -R .comment -R .note -R .note.ABI-tag"
```

----------

## noobah

a czy moglibyście mi pomóc? Chcę zainstalować 32bitowy system na procesorze Athlon64 (Venice) i kompa chcę używać jako typowy desktop. Wiem że w jego trzewiach drzemie jakaś moc, ale jakie CFLAGS ustawić, żeby było w miarę szybko i w miarę stabilnie?

Obecnie mam:

-march=athlon64 -O2 -pipe -msse3 -fomit-frame-pointer

Widzę że kolega powyżej ma taki sam procek, jak ja, więc może powie czy ma system 64 czy 32-bitowy?

----------

## BeteNoire

Najlepiej poczytaj co który poziom optymalizacji włącza to unikniesz bezmyślnego powtarzania flag: http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/Optimize-Options.html#Optimize-Options

Ja używam 

```
CFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer -DNDEBUG -DG_DISABLE_ASSERT -DNO_DEBUG -s"

CXXFLAGS="${CFLAGS}"
```

i jestem zadowolony.

----------

## noobah

 *zwirk wrote:*   

> 
> 
> Obecnie mam:
> 
> -march=athlon64 -O2 -pipe -msse3 -fomit-frame-pointer -m32

 

Yoshi poradził mi dodać jeszcze -m32.

Chodzi mi dokladniej o to czy nie będzie się gryzło to że mam -march=athlon64 na 32-bitowym systemie?

Co myślicie?

----------

## gryhild1985

Ja już nic z tych flag nie rozumiem.

Na początku miałem coś w stylu :

```

CFLAGS="-O2 -march=pentium4 -pipe -s -fomit-frame-pointer"

```

Teraz je rozbudowałęm do :

```

CFLAGS="-O2 -march=pentium4 -pipe -s -fomit-frame-pointer -mfpmath=sse -ftracer -falign-loops -ffast-math -fforce-addr -funroll-loops -maccumulate-outgoing-args -fprefetch-loop-arrays -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="-O2 -march=pentium4 -pipe -s -mfpmath=sse -ftracer -falign-loops -ffast-math -fforce-addr -funroll-loops -maccumulate-outgoing-args -fprefetch-loop-arrays -DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"

LDFLAGS="-W1,-O1,--sort-common -s"

```

No i specjalnie nie widzę różnicy w działaniu.

DO tego mam gcc-3.4.x i kernel 2.6.14.2

Może czegoś brakuje, albo czewgoś za dużo ?

----------

## BeteNoire

A wpisz sobie w google: gentoo is for ricers.   :Laughing:   :Twisted Evil: 

----------

## gryhild1985

Szukając dalej jakiegoś sposobu powiesiłem sobie coś takiego  :Smile: 

```

CFLAGS="-O3 -march=pentium4 -pipe -s -fomit-frame-pointer -mfpmath=sse -ftracer -DNDEBUG -DG_DISABLE_ASSERT "

CHOST="i686-pc-linux-gnu"

CXXFLAGS="-O3 -march=pentium4 -pipe -s -mfpmath=sse -ftracer -fno-exceptions -fno-rtti -DNDEBUG -DG_DISABLE_ASSERT "

LDFLAGS="-W1,-O1,--sort-common -s"

```

Jak narazie przekompilowałem tym firefoxa i roxa. Chyba nie stwierdzono powprawy wydajności  :Sad: 

Z tego co sobie gdzieś wyczytałem:

-mfpmath=sse - uruchamia instrukcje sse, w moim przypadku to powinno coś tam dać  :Smile: 

-ftracer - ta opcja zmusza inne opcje to wykonywania lepszej pracy  :Very Happy: 

-fno-exceptions -fno-rtti - ogólnie dobre flagi dla c++, które mogą sporo przyspieszyć niektóre programy, jednak nie wszystko je lubi i może nie chcieć współpracować(np. anjuta się kompiluje z nimi, ale wywala się przy uruchamianiu  :Sad:  )

-O3 - powiesiłem co by zobaczyć czy jednak zwiększa wydajność, się okaże  :Very Happy: 

Może powinienem coś dorzucić ? Jakieś w miarę bezpieczne flagi co by się większość chciała z nimi kompilować.

A co sądzicie o :

-funroll-loops - napisali w manualu że zwiększa objętość i nie koniecznie przyspiesza programiki, hmm...

-fpeel-loops - manual niewiele mi mówi  :Sad: 

To chyba narazie tyle będzie  :Smile: 

----------

## fallow

Mozna choc przeczytac caly ten watek od poczatku do konca. Mysle ze mozna sie calkiem sporo dowiedziec  :Razz:   :Smile: . 

Chocby to ile flag jest bezmyslnie dopisywanych do C(XX)Flags przez ludzi , a implikowana przez O3 badz O2 albo march/mtune.

cheers.

----------

## gryhild1985

Czytałem go już kilka razy  :Smile: 

----------

## free-mind

 *btower wrote:*   

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

 

Dodam, ze -march=blabla automatycznie wlacza -mcpu=blabla, wiec tego drugiego nie trzeba

dopisywac...

 *C1REX wrote:*   

> 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

 

To bardzo ciekawe zwlaszacza, ze -Os jest zestawem flag, w ktorym miedzy innymi znajduje

sie -fomit-frame-pointer...

Jakby co, powyzszej wiedzy zaczerpnalem z manuala gcc do wersji 3.3.x.

Peace.

----------

## OBenY

Taki zestaw flag dla Intel Pentium4 Prescott EM64T, arch x86_64:

DEFS_ADD="-DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"

DEFS="-DNDEBUG -DG_DISABLE_ASSERT -DNO_DEBUG $DEFS_ADD"

AS_NEEDED="-Wl,--as-needed"

BDIRECT="-Wl,-Bdirect" # to zadziala tylko i wylacznie w przypadku gdy mamy binutils w wersji 2.16-r1, zadnej innej!!!

LDFLAGS="-Wl,-O1,--sort-common $AS_NEEDED $BDIRECT -s"

COMMON="-O2 -g0 -ftracer -ffast-math -fforce-addr -s"

ARCHITECTURE="-march=nocona -mfpmath=sse -maccumulate-outgoing-args"

CXX_AGRESSIVE="-fno-enforce-eh-specs -fvisibility-inlines-hidden"

CFLAGS="$COMMON $ARCHITECTURE -fomit-frame-pointer $DEFS"

CXXFLAGS="$COMMON $ARCHITECTURE -fomit-frame-pointer $DEFS $CXX_AGRESSIVE"

No to tyle z aktualizacji  :Razz: 

Btw, -fomit-frame-pointer na gcc-3.4 rozdmuchuje troche kod, ale warto go uzywac tak czy siak ...

----------

## Ratman

Mam taka sprawę: bedę stawiał system na kompie z AMD64, ale 32-bitowy. Czy ktoś może mi podać optymalne flagi CFLAGS, bo poczytałem już tyle na naszym forum (w wersji angielskiej równiez) i powiem, że mam już mętlik w głowie   :Confused:   a noob jestem w tym.

I jeszcze jedno: co mi da w USE dodaniewszystkiego co będę chciał? A czemu pytam - ano, bo dostałem tego kompa do instalacji gentoo i okazało się, że tam już stoi RR4 i jak zobaczyłem te flagi to mi oczy zbielały:

```
CFLAGS="-Os -march=i386"

CHOST="i386-pc-linux-gnu"

USE="-oss voice weather libao -esd amarok xine java mp3 gnutls cups ppds foomatic-db alsa \ 

hal gimpprint freetype gnome X gtk2 unicode moznocompose moznoirc moznomail kde qt livecd samba \

rdesktop kerberos xscreensaver pda zeroconf wifi gnokii lm_sensors ieee1394 logitech-mouse xinerama \

bluetooth irda sms postgres mysql quotas dvb nvidia  \

xprint dvd theora ogg a52 nptl  kdeenablefinal win32codecs v4l xvid network dvdread fame \

-quicktime -kerberos winbind libclamav subversion php ruby sql svg ffmpeg nsplugin \

wmf 7Zip visualization accessibility css audiofile artswrappersuid musicbrainz \

gphoto2 povray scanner musepack dvdr jack new-login commercial kerberos \

mono pam_console pwdb dbus firefox acpi kqemu esd pcmcia openexr rar dri aac apache2 dlloader \

fat hfs jfs xfs ntfs reiserfs cjk"

CXXFLAGS="${CFLAGS}
```

Przyznam się, że jeszcze czegoś tego nie widziałem - to cóś daje???

----------

## Ratman

Sami guru na forum, a nikt nie odpowie na proste pytanie?

Jak pytam, tzn ze to dla mnie wazne, bynajmniej nie robie sobie jaj z nikogo

----------

## arsen

 *Ratman wrote:*   

> Sami guru na forum, a nikt nie odpowie na proste pytanie?
> 
> Jak pytam, tzn ze to dla mnie wazne, bynajmniej nie robie sobie jaj z nikogo

 

jakie pytanie taka odpowiedź, flagi te USE w większości są tylko wykorzystywane przez wybrane programy, polecam poczytać co dana flaga robi, a co do flag dla twojego CPU, z własnego doświadczenia napisze, czym mniej skomplikowane flagi tym lepiej, ricertstwo sux.

----------

## Ratman

dzieki - co do USE to dam sobie rade, w koncu dokumentacja gentoo w miare dobrze USE opisuje, bardziej zalezy mi na CFLAGS i to jest podstawowe pytanie.

Poniewaz sprzet jest wypasny wiec raczej zalezy mi na stabilnosci i wsparciu dla baz danych niz multimediow i "rapid boot"   :Very Happy: 

Bylbym ogromnie wdzieczny choc za sugestie, nie mam na mysli gotowego rozwiazania, bo napewno bede kompilowal na O2 i nie 386, ale co jeszcze moge dodac bo jak narazie to topic daje pojecie o sredniej klasy maszynkach i przyspieszaniu na nich wszystkiego co mozliwe, a mysle, ze tego nie bedzie kumpel potrzebowal na amd64 3000+, 2GB Ram i 160 SATA.

Ale moge sie mylic jak to noob   :Wink: 

----------

## pmz

Hej, ja sobie postawiłem Gentoo w oparciu o następujące CFLAGS i CHOST:

```
CFLAGS="-O2 -march=athlon64 -pipe"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"
```

Całość chodzi bardzo szybko i stabilnie. Zero problemów.

----------

## Ratman

O widzisz i to jest dobry początek   :Very Happy:   o optymalizacji flag sobie poczytam jeszcze (choć na naszym forum niektóre rzeczy są mało uzasadnione, ale to nic)

----------

## Chojnak

Czesc Wszystkim

Jakis czas temu zmienilem swoje flagi z 

CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer" 

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

na

CFLAGS="-march=athlon-tbird -O2 -mtune=athlon-tbird -pipe -s -ftracer -falign-loops -ffast-math -frename-registers -funroll-loops -fomit-frame-pointer -DNDEBUG -DG_DISABLE_DEBUG -DG_DISABLE_ASSERT -DG_DISALBE_CAST_CHECKS -DG_DISABLE_CHECKS"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O1,--enable-new-dtags,--sort-common,--as-needed -Bdirect -s"  

i niezauwarzylem zbytniej roznicy w predkosci dzialania gentoo. KDE dalej dziala wolno.

Korzystam z gcc-3.4.5 a procesor to Duron 1.6

Urzylem polecenia cat /proc/cpuinfo i wszedlem na strone http://www.paradicesoftware.com/specs/cpuid/index.htm i wyszlo na to ze mam Athlon (Thoroughbred).

Moze polecicie mi jakies dobre flagi dla mojego procka, lub jakies strony z polsimi manualami do flag.

Probowalem rowniez skorzystac z programu "acovea" ale niestety wyskoczyl jakis blad podczas kompilacji i niemoglem nigdzie znalesc na forum rozwiazania problemu.

Pozdrawiam

----------

## Aktyn

 *Chojnak wrote:*   

> i niezauwarzylem zbytniej roznicy w predkosci dzialania gentoo. KDE dalej dziala wolno.
> 
> Moze polecicie mi jakies dobre flagi dla mojego procka, lub jakies strony z polsimi manualami do flag.

 

Ja też nie widze róznicy, dlatego kompiluje zawsze tak pomimo iż to athlon:

```
CFLAGS="-O2 -mcpu=i686 -pipe -fomit-frame-pointer -s "
```

Samymi flagami sprzetu nie rozchulasz, -O2 już dosyć dobrze działa. ewentualnie -Os jak masz mało ramu.

Poza tym wolno czyli jak? poczytaj tu może ten watek

Dużo zależy od dysku, rodzaju systemu plików, kernela, no i pamieci RAM.

----------

## Chojnak

Moj komputer to Duron 1.6 plyta glowna oparta na nforce2 512 Ram DDRAM Dysk 40GB Segate Baracuda 3. Partycja systemowa mam reiserfs a home ext3.

Kernela mam 2.6.13-gentoo-r2 i skonfigurowalem go przez genkernel jedynie co wnim zmienilem to opcje od agp, procesor i kodowanie a i nforce2 ustawilem, wiecej juz niepamietam ale raczej juz nic wiecej nierobilem.

Kde dziala wolno to znaczy samo dzialanie w nim jest dla mnie powolne. np kiedy odpalam konquerora to troche to trwa zanim sie wlaczy, przesuwanie paska po boku jego, czy nawet zaznaczenie plikow tez powolne.

Ostatnio bylem zmuszony do zainstalowania windowsa poniewaz mialem napisac pewnien program w jagodzie (asembler) (nieudalo mi sie zemulowac go poprez wine) i wtedy zauwarzlem jaki jednak windows jest szybki. Te wszystkie czynnosci jakie wymienilem wyrzej o wiele szybciej robilem na windowsie.

----------

## n0rbi666

 *Chojnak wrote:*   

> CFLAGS="-march=athlon-tbird -O2 -mtune=athlon-tbird -pipe -s -ftracer -falign-loops -ffast-math -frename-registers -funroll-loops -fomit-frame-pointer -DNDEBUG -DG_DISABLE_DEBUG -DG_DISABLE_ASSERT -DG_DISALBE_CAST_CHECKS -DG_DISABLE_CHECKS"

 

to jest duron na rdzeniu Thoughbred, czyli śmiało daj march=athlon-xp

mtune jest implikowany przez march, więc nie trzeba go dawać

-funrool-loops wywal, robi więcej szkody niż pożytku

-falign-loops jest implikowane przez -O2 - wywal

----------

## Chojnak

Ok usunalem te opcje i zmienilem na athlon-xp, zabieram sie za kompilacje systemu na nowo. Jesli nic to nie da to znaczy ze tak musi byc.

Dzieki wielkie i pozdrawiam

----------

## Insenic

Czy możecie mnie naprowadzić na jakieś flagi na Pentuim M Centrino, by wycisnąć z niego w miarę jak najwięcej, jednocześnie zachowując jaknajlepszą stabilność. Dotychczasowo mam coś takiego:

```
CFLAGS="-O2 -march=pentium-m –pipe -fomit-frame-pointer"

CXXFLAGS="-O2 -march=pentium-m -pipe"
```

Czy ktoś z was używa takiego procesora? Jakie flagi ma ustawione? Czy wszystko z tymi flagami działa?

----------

## c2p

http://gentoo-wiki.com/Safe_Cflags#Pentium-M_.2F_Centrino_.28Intel.29

----------

## XTitan

Jakie flagi najlepiej założyć na AMD Durona 1300MHz? Takie same jak na wolniejsze wersje?

----------

## martin.k

Jeśli macie >=gcc-3.4.4 to polecam jeszcze jedną flagę:

CXXFLAGS="-fvisibility-inlines-hidden"

Przyda się zwłaszcza użytkownikom KDE i nie tylko  :Smile: 

Więcej tutaj:

http://gcc.gnu.org/wiki/Visibility

i tutaj:

https://forums.gentoo.org/viewtopic-t-426814.html

----------

## Riklaunim

portage dodaje -fvisibility gdzieniegdzie w KDE  :Smile: 

----------

## Ratman

Ha, a ja właśnie stawiam nową instalkę z GCC3.4.4 i o dziwo przy rekompilacji systemu same się te flagi dodały w maka.conf  :Very Happy: 

----------

## krzysz

Właśnie wpadł mi w ręce PIII i chciałbym postawić na nim gentoo tylko nie wiem co mu w make.conf wpisać. Będę wdzięczny jak by ktoś kto ma takie coś (lub wie co wpisać) podzielił swoimi ustawieniami  :Smile: 

----------

## KeyBi

 *krzysz wrote:*   

> Właśnie wpadł mi w ręce PIII i chciałbym postawić na nim gentoo tylko nie wiem co mu w make.conf wpisać. Będę wdzięczny jak by ktoś kto ma takie coś (lub wie co wpisać) podzielił swoimi ustawieniami 

 

Najbezpieczniej takie ... 

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

http://gentoo-wiki.com/Safe_Cflags#Pentium_III_.28Intel.29

----------

## tboloo

Mozna tez tak, jak sie chce troche szybciej

```

CFLAGS="-march=pentium3 -mtune=pentium3 -O2 -fomit-frame-pointer -momit-leaf-pointer -fno-ident -pipe"

CXXFLAGS="$(CFLAGS) -fvisibility-inlines-hidden" z tym ze to dla gcc >=3.3

```

Tyle wygrzebalem z forum po dlugich poszukiwaniach.

Pozdrowienia.

BTW takie flagi dzialaja tez dobrze dla pentium-m, przy zmianie pentium3 na m rzecz jasna  :Very Happy: 

----------

## RedHand

Jak już się chwalicie swoimi flagami to podzielę się swoimi.  :Smile:  Posiadany procek to AMD Turion. System 32bitowy.

```

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=k8 -g0 -mfpmath=sse,387 -O2 -fprefetch-loop-arrays -ftracer -fforce-addr -funroll-loops -pipe -fomit-frame-pointer -msse -msse2 -msse3 -mmmx -m3dnow -s -DNDEBUG -DNO_DEBUG -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O1,--sort-common -s"

```

System działa przyjemnie i stabilnie.

P.S. 1. Powtórzenie zimplikowanych sse, mmx i 3dnow zamierzone  :Smile: 

P.S. 2. Czy ktoś się orientuje czy w gcc4 są jakieś nowe flagi (Jeszcze nie sprawdzałem).

----------

## doman

Jako, że nie mam wiedzy programistyczej, przy wyborze flag sugerowałem się info ze strony Riklaunima i postami z różnych for (w tym z tego topiku).

Chyba całe oprogramowanie mam skompilowane z tymi flagami:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer -s -mfpmath=sse"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-s -z -combreloc"
```

----------

## n0rbi666

dla athlona-xp flaga

```
-mfpmath=sse
```

nie jest zalecana - w przypadku athlona-xp jednostka 387 jest szybsza niż ta sse

dopiero od A64 jest zalecane włączanie mfpmath=sse

----------

## kfiaciarka

Chciałem dodać ze zauważyłem ze -fvisibility-inlines-hidden czy -fvisibility=hidden czy to w make.conf czy w spaczowanym kde.eclass  :Very Happy:  powoduje problemy. Mi np kmplayer sie nie intergruje z konquerorem i wyrzuca jakies dziwne błędy.

----------

## martin.k

Z -fvisibility w KDE trzeba będzie jeszcze poczekać - prawdopodobnie do wydania KDE4.

Na razie niektóre programy ze stajni KDE nie potrafią sobie poradzić z -fvisibility, dlatego też kde.eclass filtruje te flagi.

Na początek polecam, dla tych co nie mogą się doczekać, skompilowanie samego Qt z -fvisibility. 

Overlay Qt-3.3.6 spreparowany przez nxsty'ego do zdobycia na forum w Unsupported Software.

----------

## rurski

 *krzysz wrote:*   

> Właśnie wpadł mi w ręce PIII i chciałbym postawić na nim gentoo tylko nie wiem co mu w make.conf wpisać. Będę wdzięczny jak by ktoś kto ma takie coś (lub wie co wpisać) podzielił swoimi ustawieniami 

 

Elou.

Ja mam akurat celka tualatina (PIII Tualatin z szyna 100 MHz)i moje flagi jesli chodzi o proca wygladaja tak:

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium3 -Os -pipe -fomit-frame-pointer -s -msse -mmx"

CXXFLAGS="-march=pentium3 -Os -pipe -s -msse -mmx" 

przez dodanie -msse i -mmx wymusilem dzialanie, bo niestety nie zawsze kompilowal wsio z tymi flagami.

!Peace

  Edit by Poe

ort!

----------

## piotrus-_-pan

witam,

mam natepujacy procek:

```
processor   : 0

vendor_id   : GenuineIntel

cpu family   : 6

model      : 13

model name   : Intel(R) Celeron(R) M processor         1.40GHz

stepping   : 8

cpu MHz      : 1407.208

cache size   : 1024 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 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe

bogomips: 2820.82
```

moje ustawienia wygladaja tak:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium3 -Os -pipe -fomit-frame-pointer -mfpmath=sse" 

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j2"

GENTOO_MIRRORS="ftp://mirror.icis.pcz.pl/gentoo/"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="-gtk -gnome X alsa bzip2 cdr dvd java javascript jpeg kde mozilla mp3 mpeg ncurses lm_sensors opengl pcmcia pdf png truetype qt videos xmms wifi win32codecs"

AUTOCLEAN = "yes"

PORTAGE_NICENESS = "19"

CLEAN_DELAY = "20"

LANGUAGE=48

LINGUAS="pl"

FEATURES="ccache sandbox userpriv usersandbox"

CCACHE_SIZE="2G"
```

czy moj celeron jest przedstawiany w CFLAGS jako pentium-m czy pentium3? czy pozostale ustawienia sa ok?

dziekuje i pozdrawiam

SKLEJONE:

na innych forach spotkalem sie rowniez z mozliwoscia wpisania pentium-4 jak to w koncu jest? 

bede wdzieczny za pomoc 

pozdrawiam

----------

## yaq

odpowiedz na pierwsze:

http://gentoo-wiki.com/Safe_Cflags#Pentium-M_.2F_Centrino_.28Intel.29

(mala podpowiedz: twoj celeron to pochodna pentiuma-m), przypadkiem nie uzywaj pentium-4 - chodzi znaczaco wolniej.

----------

## cespenar

Zamierzam ostatecznie przejsc na gcc-4.1.0 i mam takie pytanie: czy wlacznie flagi 

```
-ftree-vectorize
```

 na Athlonie-xp jest bezpieczne i czy ktos kto uzywal moze napisac czy sa z tym jakies jaja? Bardzo mnie ciekawi zastosowanie wektoryzacji. I czy to jest flaga dla C, C++, czy tez dla obu?

Mam jeszcze jedno pytanie jak juz pisze w tym tamacie: co tu by jeszcze mozna dorzucic:  :Wink:   :Question: 

```
CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -s -pipe -mfpmath=sse"

CXXFLAGS="-march=athlon-xp -O2 -s -pipe -mfpmath=sse"
```

----------

## no4b

-ftree-vectorize mam na amd64, problemów nie stwierdziłem.

Dorzuć sobie -ffast-math, w nowszych wersjach gcc -fomit-frame-pointer nie ma problemów z C++.

----------

## cespenar

 *no4b wrote:*   

> w nowszych wersjach gcc -fomit-frame-pointer nie ma problemów z C++.

 

Masz tak ustawione?

```
-ffast-math
```

 raczej sie boje uzywac. Przegladajac tutaj rozne tematy widze, ze dla AMD64 faktycznie warto je wlaczyc, natomiast co do mojego athlona-xp ciagle mam watpliwosci w tej kwestii.

Dopisane:

Dodalem -ffast-math, zmienilem -mfpmath=sse na -mfpmath=sse,387 bo tak podobno lepiej dla mojego procesora (ktorys raz juz to przeczytalem wiec cos moze w tym byc), dodalem oczywiscie -ftree-vectorize i ustawielm te same flagi dla C i C++, wiec -fomit-frame-pointer mam tez w CXXFLAGS. Za chwile przebuduje caly system i zobaczymy jak sie to wszystko sprawuje w praktyce.

----------

## wodzik

to skoro masz athlona xp i tak sie naszukales o flagach, jak ci wsio bedzie chodzilo (szybciej ofkors ;)) mozesz pokkazac jakie masz flagi i podzielic sie wrazeniami, bo ja jakos nigdy dluzej niz godzine nie szukalem jakie flagi by sobie ustawic i caly sys mam raczej na flagach ostroznych  :D 

pozdro wodzik

----------

## no4b

 *cespenar wrote:*   

>  *no4b wrote:*   w nowszych wersjach gcc -fomit-frame-pointer nie ma problemów z C++. 
> 
> Masz tak ustawione?

 

Tak. Nie żałuję.

----------

## cespenar

Nie ma problemu, moge pokazac jakie mam flagi, choc trzeba przyznac, ze dosc ostrozne  :Wink:  :

```
CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -s -pipe -mfpmath=sse,387 -ftree-vectorize -ffast-math"

CXXFLAGS="${CFLAGS}"
```

Wlasnie widze, ze 

```
emerge -e system
```

 przeszlo bez problemow z gcc-4.1 i tymi flagami. Teraz czas na kernel, a pozniej 

```
emerge -e world
```

Trzy pakiety, ktore wiem, ze nijak nie chca sie skompilowac tym gcc wywalilem, wiec jesli cos pojdzie nie tak, to raczej to bedzie wina flag,

----------

## nbvcxz

a ja mam do tego uwagę: przy okazji omawiania kompilacji rtorrenta dostałem coś takiego (wycięte wątki):

 *moocha wrote:*   

> You're using -s in CFLAGS. Bad bad bad. It's the same as using it in LDFLAGS, but worse . Please remove this no matter what.

 

oraz

 *moocha wrote:*   

> It's at best not necessary, since portage already strips the final executable images, and at worst downright broken, since it may strip debugging information from images that really need them, such as certain X components.

 

co prawda nie zauważyłem aby -s w CFLAGS powodowało jakieś szczególne problemy, ale moocha ma rację - po co używać -s na etapie kompilacji skoro i tak cała binarka jest stripowana (u mnie PORTAGE_STRIP_FLAGS="--strip-all --discard-all -R .comment -R .note -R .note.ABI-tag");

chyba że źle rozumuję to mnie poprawcie

----------

## cespenar

Stwierdzilem droga eliminacji kolejnych flag, ze z wlaczonym

```
-ftree-vectorize
```

nie kompiluje sie samba. W takich momentach czlowiek odruchowo szuka jakiejs plyty z ktorej mozna by bylo zainstalowac Debiana...

----------

## Crenshaw

 *cespenar wrote:*   

> Stwierdzilem droga eliminacji kolejnych flag, ze z wlaczonym
> 
> ```
> -ftree-vectorize
> ```
> ...

 

To ciekawe bo mi sie skompilowala...

CFLAGS="-march=k8 -mtune=athlon64 -O2 -pipe -fprefetch-loop-arrays -DNDEBUG -DG_DISABLE_ASSERT -ftree-loop-linear -ftracer -ftree-vectorize"

z gcc 4.1.0 poszla samba-3.0.22 + cały system

L

----------

## cespenar

Tak mi sie wydaje, ze ta flaga jest bezpieczna dla amd64 podobnie jak kilka innych. Wszyscy twierdza, ze maja wlaczone

```
-ftree-vectorize
```

 i wszystko jest OK, ale warto zauwazyc, kazdy kto to mowi ma wlasnie amd64.

----------

## Arfrever

Czy takie flagi są dobre? (Czy przyśpieszają kod wynikowy i są stabilne?):

 *make.conf wrote:*   

> CFLAGS="-march=<Architektura procesora> -pipe -O3 -fforce-addr -finline-limit=800 -fivopts -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -ftracer -ftree-loop-linear -ftree-vectorize -fweb -momit-leaf-frame-pointer"
> 
> CXXFLAGS="${CFLAGS}"

 

Używam GCC 4.1.0.

Co powodują flagi pogrubione powyżej? Czytałem "man gcc", ale nie jest tam dobrze opisane lub nie rozumiem.

Czy jest sens przy stosowaniu -fomit-frame-pointer stosować także -momit-leaf-frame-pointer?

Czy flagi -fvisibility=hidden i -fvisibility-inlines-hidden są bezpieczne?

Co powodują flagi -DNDEBUG i -DG_DISABLE_ASSERT?

Pozdrawiam

ArfreverLast edited by Arfrever on Fri May 19, 2006 11:12 pm; edited 1 time in total

----------

## DamianK

Witajcie, miałem Gentoo Linux 2006.0 AMD64 lecz niestety skasował mi się przez powalenego instalatora Visty (nie chodzi tylko o bootloadera tylko całą partycję). Chcę ponownie zainstalować.

Mam sprzęt:

Asrock 775i48 (na Intelu 848p)

Intel Pentium 4 521 (2.8Ghz, 800Mhz FSB, EM64T, HT, LGA775, Prescott E0)

2 x 256Mb DDR 400 CL 3 noname (848p nie obsluguje dual-channel :[ )

Gainward Ultra/1960 AGP (chip nVidia GeForce 6600 GT (NV43) pamięci 2.0 ns samsung w obudowach BGA)

2 dyski ATA 1 nagrywarka DVD-RAM LG i nie podpięta awaryjna nagrywarka CD-RW LG

Jak komuś się nie chce szukać własności tego procesora to wklejam:

```
Pole   Wartość

Właściwości CPUID   

CPUID: producent   GenuineIntel

CPUID: nazwa procesora   Intel(R) Pentium(R) 4 CPU 2.80GHz

CPUID: nr wydania   00000F41h

ID marki IA   00h  (Nieznane)

ID platformy   13h  (LGA775)

Numer seryjny procesora IA   Nieznane

Microcode Update Revision   9

Układy HTT / CMP   2 / 1

   

Zbiór instrukcji   

64-bitowe rozszerzenia x86 (AMD64, EM64T)   Obsługiwane

AMD 3DNow!   Nieobsługiwane

AMD 3DNow! Professional   Nieobsługiwane

AMD Enhanced 3DNow!   Nieobsługiwane

AMD Extended MMX   Nieobsługiwane

Cyrix Extended MMX   Nieobsługiwane

IA-64   Nieobsługiwane

IA MMX   Obsługiwane

IA SSE   Obsługiwane

IA SSE 2   Obsługiwane

IA SSE 3   Obsługiwane

IA SSE 4   Nieobsługiwane

VIA Alternate Instruction Set   Nieobsługiwane

Instrukcja CLFLUSH   Obsługiwane

Instrukcja CMPXCHG8B   Obsługiwane

Instrukcja CMPXCHG16B   Obsługiwane

Instrukcja Conditional Move   Obsługiwane

Instrukcja MONITOR / MWAIT   Obsługiwane

Instrukcja RDTSCP   Nieobsługiwane

Instrukcja SYSCALL / SYSRET   Nieobsługiwane

Instrukcja SYSENTER / SYSEXIT   Obsługiwane

Instrukcja VIA FEMMS   Nieobsługiwane

   

Własności zabezpieczeń   

Advanced Cryptography Engine (ACE)   Nieobsługiwane

Zapobieganie wykonywaniu danych (DEP, NX, EDB)   Nieobsługiwane

Hardware Random Number Generator (RNG)   Nieobsługiwane

Montgomery Multiplier & Hash Engine   Nieobsługiwane

Processor Serial Number (PSN)   Nieobsługiwane

   

Własności opcji zasilania   

Automatic Clock Control   Obsługiwane

Enhanced Halt State (C1E)   Nieobsługiwane

Enhanced SpeedStep Technology (EIST, ESS)   Nieobsługiwane

Frequency ID Control   Nieobsługiwane

LongRun   Nieobsługiwane

LongRun Table Interface   Nieobsługiwane

PowerSaver 1.0   Nieobsługiwane

PowerSaver 2.0   Nieobsługiwane

PowerSaver 3.0   Nieobsługiwane

Processor Duty Cycle Control   Obsługiwane

Software Thermal Control   Nieobsługiwane

Temperature Sensing Diode   Nieobsługiwane

Thermal Monitor 1   Obsługiwane

Thermal Monitor 2   Nieobsługiwane

Thermal Monitoring   Nieobsługiwane

Thermal Trip   Nieobsługiwane

Voltage ID Control   Nieobsługiwane

   

Własności CPUID   

36-bit Page Size Extension   Obsługiwane

Address Region Registers (ARR)   Nieobsługiwane

CPL Qualified Debug Store   Obsługiwane

Debug Trace Store   Obsługiwane

Debugging Extension   Obsługiwane

Fast Save & Restore   Obsługiwane

Hyper-Threading Technology (HTT)   Obsługiwane, Włączone

L1 Context ID   Obsługiwane

Local APIC On Chip   Obsługiwane

Machine Check Architecture (MCA)   Obsługiwane

Machine Check Exception (MCE)   Obsługiwane

Memory Configuration Registers (MCR)   Nieobsługiwane

Memory Type Range Registers (MTRR)   Obsługiwane

Model Specific Registers (MSR)   Obsługiwane

Page Attribute Table (PAT)   Obsługiwane

Page Global Extension   Obsługiwane

Page Size Extension (PSE)   Obsługiwane

Pending Break Event   Obsługiwane

Physical Address Extension (PAE)   Obsługiwane

Secure Mode Extensions (SMX)   Nieobsługiwane

Secure Virtual Machine Extensions (Pacifica)   Nieobsługiwane

Self-Snoop   Obsługiwane

Time Stamp Counter (TSC)   Obsługiwane

Virtual Machine Extensions (Vanderpool)   Nieobsługiwane

Virtual Mode Extension   Obsługiwane
```

Byłbym baaaaaaaaaardzo wdzięczny jeśli ktoś przygotował mi dobry konfig make.conf albo chociaż CFLAGS. Nie zależy mi na czasie kompilowania czy rozmiarze pliku binarnego wyjściowego tylko na dużej wydajności.

Mam jeszcze jedno pytanie, z jakiego stage'a najlepiej robić Gentoo (chodzi mi o wydajność)? Tak jak wspominałem zależy mi na wydajności (przedewszystkim na X-ach), nie na długości kompilacji. 

Pozdrawiam

od raku: znaczniki [ code ]

----------

## Raku

 *DamianK wrote:*   

> Byłbym baaaaaaaaaardzo wdzięczny jeśli ktoś przygotował mi dobry konfig make.conf albo chociaż CFLAGS. Nie zależy mi na czasie kompilowania czy rozmiarze pliku binarnego wyjściowego tylko na dużej wydajności.
> 
> 

 

ile jesteś w stanie za to zapłacić?

bo jak nic, to "zrób se sam", albo zmień dystrybucję, na taką, którą będizesz potrafił skonfigurować (lub sama się skonfiguruje).

 *Quote:*   

> Mam jeszcze jedno pytanie, z jakiego stage'a najlepiej robić Gentoo (chodzi mi o wydajność)? Tak jak wspominałem zależy mi na wydajności (przedewszystkim na X-ach), nie na długości kompilacji.

 

Gentoo najlepiej robić od dokumentacji...

----------

## DamianK

 *Raku wrote:*   

>  *DamianK wrote:*   Byłbym baaaaaaaaaardzo wdzięczny jeśli ktoś przygotował mi dobry konfig make.conf albo chociaż CFLAGS. Nie zależy mi na czasie kompilowania czy rozmiarze pliku binarnego wyjściowego tylko na dużej wydajności.
> 
>  
> 
> ile jesteś w stanie za to zapłacić?
> ...

 

Chyba żartujesz? Dystrybucja nie jest dla mnie do pracy tylko dla nauki konfiguracji i obsługi Gentoo

 *Raku wrote:*   

> 
> 
>  *Quote:*   Mam jeszcze jedno pytanie, z jakiego stage'a najlepiej robić Gentoo (chodzi mi o wydajność)? Tak jak wspominałem zależy mi na wydajności (przedewszystkim na X-ach), nie na długości kompilacji. 
> 
> Gentoo najlepiej robić od dokumentacji...

 

Instalowałem sobie od dokumentacji. Lecz nic dużo ciekawego o CFLAGS nie znalazłem.

Widzę że jesteś cham i że za wszystko chcesz pieniądze. Jak chciałbyś mieć dobrą opinię na forum, nie ilość postów to pewnie byś mi pomógł za darmo/

od raku: ort.

----------

## Kurt Steiner

DamianK, po prostu chodzi o to, ze nikt za Ciebie niczego robil nie bedzie - zrob sam, a my co najwyzej podpowiemy. Zreszta sam mowisz: *DamianK wrote:*   

> Dystrybucja nie jest dla mnie do pracy tylko dla nauki konfiguracji i obsługi Gentoo

 To sie ucz. Kazdy niech robi sam - cos co dla kogos jest optymalne, dla Ciebie moze nie byc.

Proponowalbym sie nie oburzac, tylko wlozyc troche wlasnej pracy. Masz tu caly watek o CFLAGS - czytaj. Nie musisz miec tej optymalizacji od razu - i tak poprawa nie bedzie az tak widoczna. Powolutku...  :Wink: 

Aha, jeszcze zerknij tu: http://so.pwn.pl/slowo.php?co=cham

----------

## milu

Chłopcze, nie unoś się! Wyzwiska na tym forum(na innych pewnie również) nie są mile widziane. Jeśli nie chce Ci się szukać(a wszystko co potrzebujesz jest w zasięgu ręki/wzroku) to czemu liczysz na to że ktoś za Ciebie to zrobi(w dodatku za friko). A propos opinii na forum to Raku ma bardzo dobrą i raczej tego nie zmienisz - zdążył sobie odpowiednio na nią zapracować.

Wracając do tematu:

- http://www.gentoo.org/doc/pl/handbook/

- Wątek o CFLAGS

- wyszukiwarka forum i google

...i do czytania. Powodzenia.

----------

## DamianK

Szukałem na google! CFLAGS i CLAGS site:gentoo.org nic nie pokazuje. Pozatym w tym wątku nikt nie pisał o jakimkolwiek Pentium 4 Prescott E0 z HT, EM64T. Niech wypowie się ktoś kto ma taki jak ja procesor albo jakikolwiek 5x1

Chcę się uczyć obsługi Gentoo, ale żeby ustawić CFLAGS to trzeba znać GCC a żeby znać GCC trzeba znać się na programowaniu w C++.

A żeby ustawić flagi to trzeba za każdym razem kompilować. Czy mógłby ktoś zamieścić jakiś program typu SuperPI popróbować na których flagach jest najlepiej kompilować, bo jak dobrze flagi ustawię to będziie szybciej chodzić aplikacja prawda?

----------

## Aktyn

 *DamianK wrote:*   

> Chcę się uczyć obsługi Gentoo, ale żeby ustawić CFLAGS to trzeba znać GCC a żeby znać GCC trzeba znać się na programowaniu w C++.

 

No nie koniecznie, ustawiasz jakieś flagi, kompilujesz i sprawdzasz. Problem, z tego co ja sie orientuje, jest dość złożony, szczególnie jak sie ma wiecej flag, nie ma jednoznacznych korzyści dla każdej aplikacji. To co dla jednej da 3% korzyści, będzie stratą dla innej. 

 *Quote:*   

> A żeby ustawić flagi to trzeba za każdym razem kompilować. Czy mógłby ktoś zamieścić jakiś program typu SuperPI popróbować na których flagach jest najlepiej kompilować, bo jak dobrze flagi ustawię to będziie szybciej chodzić aplikacja prawda?

 

Jak pisałem powyżej nie prawda, choć nie da sie ukryć że dla jakiejś tam części oczywiście przyniesie spodziewane rezultaty.

+++

Pewnie jeszcze zależy to jeszcze od systemu (32 czy 64 bitowy), wersji kompilatora itp.

----------

## DamianK

 *Aktyn wrote:*   

>  *DamianK wrote:*   Chcę się uczyć obsługi Gentoo, ale żeby ustawić CFLAGS to trzeba znać GCC a żeby znać GCC trzeba znać się na programowaniu w C++. 
> 
> No nie koniecznie, ustawiasz jakieś flagi, kompilujesz i sprawdzasz. Problem, z tego co ja sie orientuje, jest dość złożony, szczególnie jak sie ma wiecej flag, nie ma jednoznacznych korzyści dla każdej aplikacji. To co dla jednej da 3% korzyści, będzie stratą dla innej. 
> 
>  *Quote:*   A żeby ustawić flagi to trzeba za każdym razem kompilować. Czy mógłby ktoś zamieścić jakiś program typu SuperPI popróbować na których flagach jest najlepiej kompilować, bo jak dobrze flagi ustawię to będziie szybciej chodzić aplikacja prawda? 
> ...

 

Nooo Aktyn wreszcie trafiłem na jakiegoś konkretnego kolesia. Będe miał 64-bitowy system oczywiście. Jak myślicie o ile system przyspieszy jeśli wyłącze emulację x86, wszystko będe miał 64-bitowe? Co do CFLAGS dalej kontynuuje jakie ustawić CFLAGS najlepiej dla 64-bitowego Prescotta ?

----------

## n0rbi666

DamianK:

Niech żyje lenistwo, stronę wcześniej jest post : https://forums.gentoo.org/viewtopic-p-3033174.html#3033174 - a ktoś już napisał, żebyś przeczytał ten wątek ...

----------

## Arfrever

 *Arfrever wrote:*   

> Czy takie flagi są dobre? (Czy przyśpieszają kod wynikowy i są stabilne?):
> 
>  *make.conf wrote:*   CFLAGS="-march=<Architektura procesora> -pipe -O3 -fforce-addr -finline-limit=800 -fivopts -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -ftracer -ftree-loop-linear -ftree-vectorize -fweb -momit-leaf-frame-pointer"
> 
> CXXFLAGS="${CFLAGS}" 
> ...

 

A czy mi ktoś może pomóc? Szukałem w Google oraz na tym forum, ale to, co znalazłem dotyczy "<gcc-4*" lub nie tych flag, o których chciałbym się dowiedzieć, co robią, czy są stabilne, i, czy przyśpieszają. Można ewentualnie podać jakiś skrót do opisu tych rzeczy, bo ja nie mogę znaleźć takiego opisu  :Sad:   :Sad:   :Sad:  .

Pozdrawiam

ArfreverLast edited by Arfrever on Fri May 19, 2006 11:10 pm; edited 1 time in total

----------

## Raku

 *DamianK wrote:*   

> Byłbym baaaaaaaaaardzo wdzięczny jeśli ktoś przygotował mi dobry konfig make.conf albo chociaż CFLAGS.

 

 *DamianK wrote:*   

> Chyba żartujesz? Dystrybucja nie jest dla mnie do pracy tylko dla nauki konfiguracji i obsługi Gentoo

 

Czegoś tu nie rozumiem. To chcesz się uczyć, czy szukasz jelenia, co ci skonfiguruje system za friko, poświęcając na to swój czas, wiedzę i umiejętności?

 *Quote:*   

> Instalowałem sobie od dokumentacji. Lecz nic dużo ciekawego o CFLAGS nie znalazłem.

 

a forum, gentoo-wiki, doumentację gcc oraz google przeglądałeś?

 *Quote:*   

> Widzę że jesteś cham i że za wszystko chcesz pieniądze.

 

widzisz, ja po twoim jednym poście nie oceniłem cię na wstrętnego lenia, więc proszę - mnie także nie oceniaj.

Pieniądze chcę zawsze, gdy ktoś obcy prosi mnie o zrobienie czegoś. Wyjątki robię jedynie dla rodziny i niektórych znajomych. Za darmo mogę jedynie pomóc komuś w rozwiązaniu jego problemu.

A że jestem chamski? Wybacz mi, ale na takie "cfaniactwo", jakie prezentujesz to jedyna metoda. Chcesz mieć coś zrobione, to przyzwyczaj się, że albo robisz to sam, albo za to płacisz. Tak działa Open Source.

 *Quote:*   

> Jak chciałbyś mieć dobrą opinię na forum, nie ilość postów to pewnie byś mi pomógł za darmo

 

Moja opinia na forum to indywidualna sprawa każdego opiniującego. Jedni mogą mnie chwalić, inni nie. Na pewno nie jestem lubiany przez osoby, które traktują forum jako siedlisko darmowej siły roboczej. Ja ci mogę pomóc, ale zadaj pytanie, a nie zlecenie za "Bóg zapłać".

 *Quote:*   

> Szukałem na google! CFLAGS i CLAGS site:gentoo.org nic nie pokazuje.

 

to poszukaj jeszcze ogólnie na google. zajrzyj też na stronę domową kompilatora gcc.

 *Quote:*   

> Pozatym w tym wątku nikt nie pisał o jakimkolwiek Pentium 4 Prescott E0 z HT, EM64T. 

 

z czystym sumieniem mogę cię nazwać wrednym kłamcą.

 *Quote:*   

> Chcę się uczyć obsługi Gentoo, ale żeby ustawić CFLAGS to trzeba znać GCC a żeby znać GCC trzeba znać się na programowaniu w C++. 

 

Nie do końca. Wystarczy ogólna wiedza. Choć im lepiej opanujesz obsługę kompilatora i wiedzę programistyczną, tym łatwiej ci będzie zrozumieć dlaczego dana flaga jest dobra/zła dla danego programu.

 *Quote:*   

> A żeby ustawić flagi to trzeba za każdym razem kompilować. Czy mógłby ktoś zamieścić jakiś program typu SuperPI popróbować na których flagach jest najlepiej kompilować, bo jak dobrze flagi ustawię to będziie szybciej chodzić aplikacja prawda?

 

Szczerze ci radzę: ustaw sobie coś, co się nazywa "safe flags" i możesz znaleźć na gentoo-wiki. Dla ciebie będą to najszybsze flagi.

----------

## DamianK

 *Quote:*   

> Widzę że jesteś cham i że za wszystko chcesz pieniądze.
> 
> widzisz, ja po twoim jednym poście nie oceniłem cię na wstrętnego lenia, więc proszę - mnie także nie oceniaj.
> 
> Pieniądze chcę zawsze, gdy ktoś obcy prosi mnie o zrobienie czegoś. Wyjątki robię jedynie dla rodziny i niektórych znajomych. Za darmo mogę jedynie pomóc komuś w rozwiązaniu jego problemu.
> ...

 

Przepraszam, ale dla mnie Open Source jest to taka pomoc ze kazdy ktos napisze program i w ten sposob wspomaga innym. Open Source powstalo po to zeby sobie pomagac! Ktos kto pisze oprogramowanie na licencji Open Source/freeware pod Windowsa jest dla mnie skończonym kretynem. Gdy pod windowsa jest 5 komercyjnych alternatyw (Jak ludzi stac na windowsa to i na inne oprogramowanie), a pod Linuksa nie ma żadnej. Open Source jest wlasnie po to zeby sobie pomagac!! Ja tak chociaz to rozumiem

----------

## Raku

masz wypaczone pojęcie Wolnego Oprogramowania i Open Source. polecam lekturę:

http://www.gnu.org/home.pl.html

http://www.opensource.org/docs/definition.php

Może ci się rozjaśni, o co w tym wszystkim chodzi. Prawdopodobnie twój światopogląd runie w gruzach, bo tu bynajmniej nie chodzi o wzajemne pomaganie sobie. Świat nie jest taki cukierkowy, jak byśmy chcieli żeby był...

----------

## Poe

@DamianK

ja bym polecił ci się zastosować do podpisu drogiego kolegi Raka i/lub innego, bardzo lubianego przeze mnie hasła - "linux systemem nie dla każdego". przemysl to. do uzywania linuksa nie trzeba byc wybitnym programistą, ale trzeba troche myslec i kombinowac samemu. a jezeli Ci sie nie chce... coz.... You should back to the window$ and click'n next-next-next always.... nie nameczysz sie zbytnio i nie bedziesz musial czytac manów  i innych pomocy naukowych. przykro mi bardzo, ale bardzo narażasz się na tym forum takim zachowaniem i nie jestes tylko pod moją ścisłą obserwacją. 

do ustawienia CFLAGS nie trzeba byc programistą. wystarczy poczytać mana gcc i znać co nieco angielski. 

Damian K.. Damian K.... kurde, znajomy nick, az za bardzo.. kolek, swami, damian kozlowski.... styl też podobny w pisaniu, choc tamten wydawal sie bardziej obeznany w temacie w stosunku do tego usera.....

----------

## DamianK

 *Poe wrote:*   

> @DamianK
> 
> ja bym polecił ci się zastosować do podpisu drogiego kolegi Raka i/lub innego, bardzo lubianego przeze mnie hasła - "linux systemem nie dla każdego". przemysl to. do uzywania linuksa nie trzeba byc wybitnym programistą, ale trzeba troche myslec i kombinowac samemu. a jezeli Ci sie nie chce... coz.... You should back to the window$ and click'n next-next-next always.... nie nameczysz sie zbytnio i nie bedziesz musial czytac manów  i innych pomocy naukowych. przykro mi bardzo, ale bardzo narażasz się na tym forum takim zachowaniem i nie jestes tylko pod moją ścisłą obserwacją. 
> 
> do ustawienia CFLAGS nie trzeba byc programistą. wystarczy poczytać mana gcc i znać co nieco angielski. 
> ...

 

Ja mysle dobrze. Juz nie 1 czy 2-gi raz kompiluję jądro (poprawnie). Nic jeszcze nie spieprzyłem. Ja nie używam Gentoo do pracy tylko do nauki i wywaliać mi z winshitem sami sobie siedźcie załoze się że 80% uników na te forum wchodzi z WinNT 5.1. Nie znam się na C++ i gcc więc pytam się was jakie flagi wpływają korzystnie na kompilacje!!

----------

## Yatmai

 *DamianK wrote:*   

> Ja mysle dobrze.

 

Jak tu robić, żeby zrobić, a się nie narobić ? :]

 *DamianK wrote:*   

> Juz nie 1 czy 2-gi raz kompiluję jądro (poprawnie). Nic jeszcze nie spieprzyłem.

 

To się chwali... Tylko to jeszcze o niczym wielkim nie świadczy  :Razz:  To jest Gentoo, nie Mandriva :]

 *DamianK wrote:*   

> Ja nie używam Gentoo do pracy tylko do nauki

 

Toż to samą przyjemność powinno Ci sprawiać wertowanie manuali w ilościach hurtowych.... (wiem to po sobie  :Very Happy:  )

 *DamianK wrote:*   

> załoze się że 80% uników na te forum wchodzi z WinNT 5.1

 

Chcesz nas obrazić, czy udowodnić jakim jesteś ignorantem... Pomyśl, po co user winshita miałby tu zaglądać ? No chyba, ze to po by się gotować z zazdrości jaki mamy boski system  :Very Happy: 

 *DamianK wrote:*   

> Nie znam się na C++ i gcc więc pytam się was jakie flagi wpływają korzystnie na kompilacje!!

 

Jakby tu teraz napisać, żebyć też nie miał mnie za chama... Najkorzystniej wpływa jak najmniejsza ilość flag... Dlaczego ? Otóż każda kolejna w jakiś tam sposob zwiększa ryzyko wywalenia się jakiegoś pakietu, a jeśli nie potrafisz sobie sam czegoś dobrać to i nie będziesz potrafił rozwiązać takiego problemu. 

Druga rzecz... korzystniej ? Znaczy się, jaką chcesz korzyść uzyskać ? W końcu oprócz szybkości jest jeszcze choćby wielkość binarki, no i wymieniona wyżej stabilność :]

Po trzecie i tak nie ma co się napalać na wyszukane flagi, bo przeglądając kilka artów/manuali o tym w jednym zachwalali flagę X, ganili Y, a w drugim odwrotnie i nie wiadomo komu wierzyć, tym bardziej, że istotna jest także twoja osobista i niepowtarzalna konfiguracja programowa i sprzętowa.

Reasumując, jak koniecznie chcesz sobie dokręcić flagi, to polecam zrobić sobie duuży kubek kawy, zapodać manuala, choćby na gentoo-wiki i pozarywać kilka nocy testując, jaka flaga da jakie efekty. No i nie obrażaj ludzi, którzy sugerują, że jeśli nie dajesz sobie rady, to byś wrócił na windę, bo chyba nie o to chodzi w tej społeczności :] A nie każdy urodził się by być userem Gentoo  :Very Happy: 

----------

## Poe

 *DamianK wrote:*   

> 
> 
> Ja mysle dobrze. 

 

pozwól, że tego głośno nie skomentuje

 *DamianK wrote:*   

> 
> 
> Juz nie 1 czy 2-gi raz kompiluję jądro (poprawnie). 
> 
> 

 

no i? co ma jedno z drugim wspolnego? tez potrafie wpisac make && make modules_install

 *DamianK wrote:*   

> 
> 
> Nic jeszcze nie spieprzyłem.
> 
> 

 

to miej z tego satysfakcje

(tu było cos innego, jednak doszedłem do wniosku, że zmienię to)

 *DamianK wrote:*   

> 
> 
> Ja nie używam Gentoo do pracy tylko do nauki
> 
> 

 

tym lepiej. bo żeby pracować pierw trzeba sie nauczyć, a nikt nie mówi nigdzie, że nauka jest prosta, krotka i przyjemna. to nie przedszkole

 *DamianK wrote:*   

> 
> 
>  i wywaliać mi z winshitem sami sobie siedźcie
> 
> 

 

Pozwól, że sami sobie wybierzemy na czym bedziemy siedzieć, nie musimy mieć Twojego pozwolenia(ba, wrecz nakazu)

 *DamianK wrote:*   

> 
> 
>  załoze się że 80% uników na te forum wchodzi z WinNT 5.1. 
> 
> 

 

Ich sprawa. Ale przynajmniej wiedzą co piszą

 *DamianK wrote:*   

> 
> 
> Nie znam się na C++ i gcc 
> 
> 

 

To sie poznaj choc troche. kurde, ile ty masz w ogole lat?!

 *DamianK wrote:*   

> 
> 
> więc pytam się was jakie flagi wpływają korzystnie na kompilacje!!

 

powodzenia

----------

## kfiaciarka

Zgadzam się z Art.root'em. Gentoo to "twoje dziecko" możesz je dopieszczać ile chcesz i jak chcesz. Na poczatek proponuję ci jednak postawic stabilne gentoo amd64 i nie wyłączać emulacji x86 bo się przydaje. Postaw je sobie na flagach typu:

```

CFLAGS="-O2 -march=nocona -msse3 -pipe -fomit-frame-pointer"
```

(http://gentoo-wiki.com/Safe_Cflags#Pentium_4_.28Prescott.29_.28Intel.29)

Nastepnie na 2 partycji stawiaj sobie do bólu gentoo testowe, ~amd64, z gcc4.x, i różnymi flagami które ci wpadną w oko po przeczytaniu manuali (man gcc!!) i koniecznie naszego forum, angielskiego też. Dodaj sobie LDFLAGS i zobacz jak wpływają naszybkość kompilacji i działanie gentoo. W końcu znajdzies optymalny zestaw flag i opcji dla swojego komutera i potrzeb. Wtedy też poznasz gentoo i o to przecież ci chodzi. Przynajmniej w ten sposób odczytałem mysl przewodnią celu jakim jest posiadanie przez ciebie gentoo.

Happy gentooing!!

----------

## n0rbi666

Coś mi tutaj OT pachnie, chyba dyskusja nie za bardzo na temat  :Wink: 

DamianK - ja i Raku daliśmy Ci linka do postu z flagami na EM64T, a Ty dalej trujesz. Czego więcej chcesz?

A co do wolnego oprogramowania - to bardzo się mylisz, oj baaardzo ...

Nie wróżę Ci kariery na forum  :Smile: 

----------

## psycepa

[OT] czyzby kolejne dziecko neostrady? [/OT]

 :Twisted Evil: 

----------

## SlashBeast

Witam wszystkich! Od pewnego czasu czytam Gentoo Forums i wiki (imho nieocenione zrodlo informacji) i dlatego tez postanowilem tutaj sie Was poradzic.

A wiec moj procesor:

```
processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 8

model name      : Pentium III (Coppermine)

stepping        : 6

cpu MHz         : 790.262

cache size      : 256 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 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse

bogomips        : 1581.44
```

Moja flagi:

```
-march=pentium3 -mfpmath=sse -msse -mmmx -O3 -pipe -fomit-frame-pointer -s -DNDEBUG -DG_DISABLE_DEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS
```

Duzo czytalem o flagach ale ile ludzi tyle opinii, gdzies wyczytalem ze by uzywac niektorych flag trzeba miec dosc sporo ramu dlatego dodam, ze mam 512M SDRAM PC133.

Czy flagi jake dalem, pozwola mi wycisnac najwiecej z mojego procesora ? I niestety nie znalazlem nigdzy info (moze dlatego ze strasza ze mnie niemota  :Wink: ) jaka jest roznica miedzy "mfpmath=sse" a "msse", wyczytalem tylko ze to nie to samo.

gcc version 4.1.1 20060517

Pozdrawiam.

----------

## kfiaciarka

Tak o ile uzyejsz 

```
-O2
```

 i dasz 

```
-mfpmath=see,387 -pipe -fomit-frame-pointer -ftracer
```

 te DN_ itd to musisz wiedziec kiedy wyłączac bo niektóre rzecy beda ci faultować. Dodatkowo mozesz dodac sobie ciekawsze LDFLAGS np --as-needed. Ale to w ramach testów. A gcc to raczej tego snapszota nie bierz tylko jakąś ~arch wersje np 4.0.3. No i potestuj sobie:)

----------

## SlashBeast

```
-march=pentium3 -mfpmath=sse,387 -fomit-frame-pointer -ftracer -msse -mmmx -s -O2 -pipe
```

Tak bedzie najlepiej ? 

I czy jest w stanie ktos my wyjasnic dlaczego mialem dodac ",387" i jak sie ma "mfpmath=sse,387" do "msse" ?

----------

## Aktyn

 *SlashBeast wrote:*   

> I czy jest w stanie ktos my wyjasnic dlaczego mialem dodac ",387" i jak sie ma "mfpmath=sse,387" do "msse" ?

 

"'mfpmath=sse,387 " jest troche eksperymentalne tak pisze w man gcc, a ogólnie chodzi o wykorzystanie jednostki zmiennoprzecinkowiej, z tym że 387 jest niby lepsze na dzień dzisiejszy, Choć sse powinno coś dac na nowszych kompilatorach, takie rzeczy ludzie piszą, w sumie potestuj  :Smile: 

A ja mam przy okazji jedno pytanie, jest flaga  -fno-ident , jeżeli dobrze rozumiem to pomija ona dyrektywe #ifdef ident. Widze że kod wynikowy jest troche mniejszy dzieki tej fladze. Czy ktoś mądry moze mi powiedzieć do czego stosuje sie te dyrektywe w plikach? Bo w sumie jakoś nie moge sie doszukać nic na ten temat

----------

## no4b

W info cpp można znaleźć:

 *Quote:*   

> 8 Other Directives
> 
> ******************
> 
> The `#ident' directive takes one argument, a string constant.  On some
> ...

 

----------

## Crasher

Planuje zainstalowac gentoo na laptopie z procesorem CeleronM 1.5. 

I tu mam wlasnie problem z flagami, bo wiem, ze to wazna kwestia przy instalacji. Znalazlem cos takiego :

For gcc 3.3:

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium3 -msse2 -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

For gcc 3.4 and later:

CHOST="i686-pc-linux-gnu"

CFLAGS="-O2 -march=pentium-m -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

Ale czy to wszystko i czy to wogole dobre flagi?

Pozdrawiam

----------

## Raku

 *Crasher wrote:*   

> Planuje zainstalowac gentoo na laptopie z procesorem CeleronM 1.5. 
> 
> For gcc 3.4 and later:
> 
> CHOST="i686-pc-linux-gnu"
> ...

 

na początek wystarczy - flagi są jak najbardziej poprawne. Możesz bawić się w eksperymentowanie z bardziej ricerskimi flagami, ale z podanymi wyżej wszystko powinno się kompilować bezproblemowo.

----------

## Crasher

Jak juz niektorzy wiedza jestem poczatkujacym uzytkownikiem i dopiero rozpoczynam moja przygode z gentoo. 

Troszke poczytalem i przygotowalem sobie pliczek menu.conf. Nie jest to zapewne idealny plik, dlatego chcialbym Was prosic o pzeanalizowanie go i ewentualne podpowiedzi ci do zmian. 

Moj komputer to Toshiba Satellite L10-119 z procesorem Intel CeleronM 370 1.5GHz, 512MB Ram.

```

CHOST="i686-pc-linux-gnu"

CFLAGS="-O2 -march=pentium-m -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

ACCEPT_KEYWORDS="~x86"

LINGUAS="pl en"

LANGUAGE=48

FATCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp \$(URI) -P \$(DISTDIR)"

RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp \$(URI) -P \$(DISTDIR)"

GENTOO_MIRRORS=" http://src.gentoo.pl http://gentoo.prz.rzeszow.pl http://gentoo.zie.pg.gda.pl http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

RSYNC_RETRIES="3"

RSYNC_TIMEOUT=25

MAKEOPTS="-j2"

PORTAGE_NICENESS=1

AUTOCLEAN="yes"

PORTAGE_TMPFS="/dev/shm"

```

Jezeli czegos brakuje to dajcie znac. Jezeli czegos jest za duzo to rowniez. Nie wiem jak to jest z tym -fomit-frame-pointer, gdzies czytalem zeby tego nie dawac, bo sprawia jakies tam problemy itp. Nie wiem co jeszcze moge dodac dla mojego procka, zeby to wszystko sprawniej dzialalo, czy moze to co jest wystarczy. 

Prosze o pomoc, z gory bardzo dziakuje.[/code]

Pozdrawiam

----------

## kfiaciarka

nei ma z tym problemu raczej:) Postaw sobie gentoo najpierw:) W sumie na poczatek by było lepiej stabilne zamiast ~x86, a dopiero póxniej byś sobie testował różne optymalizacje.

----------

## Crasher

Czyli narazie ACCEPT_KEYWORDS zahaszowac?

Nie musze miec wszystkiego poustawianego w make.conf przed montowaniem systemu plikow proc i zmiana srodowiska poprzez chroot / env-updeate i aktualizacja Portage?

Pamietam, ze jak przygladalem sie kiedys roznym plikom make.conf to bylo tam cos takiego jak USE="", no wlasnie, ale nie wiem do konca o co tam chodzi, czy powinienem to miec i co tam wpisac.. 

Pozdrawiam

----------

## taopai

cześć. trochę sobie tu poczytałem i pomyślałem, że w sumie mogę coś pokombinować. na razie flagi w "/etc/make.conf" wyglądają tak:

```
CFLAGS="-march=athlon-xp -pipe -O2"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"
```

czyli dosyć łagodnie  :Smile: 

generalnie myślę sobie nad czymś takim:

```
CFLAGS="-march=athlon-xp -pipe -O3 -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="-march=athlon-xp -pipe -O2"
```

ale zanim zrobię "emerge -e world", to chciałbym poznać waszą opinię, bo szczerze mówiąc zgłupiałem  :Smile: 

dla mnie priorytetem jest stabilność, dopiero potem wydajność. niby stabilne flagi dla mojego procesora to:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

ale gdzieś czytałem, że -fomit-frame-pointer nie lubi się z CXXFLAGS, więc wolę dmuchać na zimne.

ogólnie będę wdzięczny za rady.

pozdrawiam,

tao

----------

## n0rbi666

taopai - -fomit-frame-pointer się nie gryzie z CXXFLAGS (kiedyś się nie zalecało te flagi, ale teraz spokojnie można jej używać)

Polecam : 

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

  :Smile: 

----------

## Gabrys

Miałem kiedyś -O3, ale nie zauważyłem wzrostu szybkości względem -O2, natomiast wzrost czasu kompilowania był już znaczny (z dobre kilkadziesiąt %, tak na oko oczywiście). Ponadto czytałem, że z jakichś dziwnych powodów aplikacje Qt nie lubią -O3.

I nie rozumiem dlaczego wymyśliłeś sobie inne flagi C od flag CXX, może się czegoś dowiem?

----------

## taopai

 *n0rbi666 wrote:*   

> Polecam : 
> 
> ```
> CHOST="i686-pc-linux-gnu"
> 
> ...

 

dzieki. co prawda nadal mnie kusi, żeby dla CFLAGS dać -O3, a dla CXXFLAGS zostawić -O2, bo w sumie w razie awarii mam w miarę aktualnego backupa  :Smile:  teraz mam tylko dylemat, czy w razie czego będzie mi się chciało czekać aż drugi raz się wszystko przekompiluje  :Smile: 

[EDIT]

 *Gabrys wrote:*   

> I nie rozumiem dlaczego wymyśliłeś sobie inne flagi C od flag CXX, może się czegoś dowiem?

 

gdzieś przeczytałem, że ObenY używa -O3 dla C i -Os dla CXX i jakoś tak mnie naszło, że skoro są dwie zmienne, to jednak musi to być z jakiegoś powodu  :Smile: 

pozdrawiam,

tao

----------

## Gabrys

-O3 w zasadzie jest uznawany za całkowicie bezpieczny (pomijając jakieś dziwne sytuacje z Qt, ale sam się _chyba_ na nie nie natknąłem, a miałem dość długo cały system z -O3, w tym KDE). Powód dla którego jest niezalecany do wzrastający mocno czas kompilacji.

----------

## Crasher

A moglby ktos odpowiedziec na moje pytanka?

Z gory dzieki, 

Pozdrawiam

----------

## Gabrys

 *Crasher wrote:*   

> Czyli narazie ACCEPT_KEYWORDS zahaszowac?

 

Tak

 *Quote:*   

> 
> 
> Nie musze miec wszystkiego poustawianego w make.conf przed montowaniem systemu plikow proc i zmiana srodowiska poprzez chroot / env-updeate i aktualizacja Portage?
> 
> 

 

Nie. Portage ma swoje domyślne ustawienia.

 *Quote:*   

> 
> 
> Pamietam, ze jak przygladalem sie kiedys roznym plikom make.conf to bylo tam cos takiego jak USE="", no wlasnie, ale nie wiem do konca o co tam chodzi, czy powinienem to miec i co tam wpisac.. 
> 
> 

 

USE też jest domyślne. W pliku /etc/make.conf możesz nadpisać domyślne ustawienia przez dodanie flagi np. USE="apache" lub wywalenie np. USE="-nls". Oczywiście można łączyć i w efekcie po roku korzystania z Gentoo USE wygląda już bardziej zaawansowanie, np:

```
USE="

gadu

pic mad mp3 mpeg

3dnow 3dnowext sse mmx mmxext

xorg pertty xgl

-nsplugin -mozilla

 -3dfx X a52 aac acpi alsa -apache2 arts avi bash-completion berkdb bidi bitmap-fonts -bluetooth -browserplugin bzip2 cairo cddb cdr clamav crypt cups dbus dga dhcp dio directfb divx4linux dri dts dv dvb dvd dvdr dvdread dvr3 encode -epiphany -esd ethereal exif fbcon -ffmpeg firefox flac flash foomaticdb gd gdbm gif gimp gimpprint glitz glut gnome gphoto2 gpm gstreamer gtk gtk2 hal hddtemp howl -i8x0 icq -ieee1394 imlib innodb jabber -jack java javascript jpeg jpeg2k kde -kdeenablefinal -kdexdeltas lcms libclamav libwww -lirc lm_sensors -logitech-mouse -madwifi mikmod mime mjpeg mmx mmx2 -mono -mozilla mp3 mpeg mppe-mppc musepack musicbrainz -mysql nautilis ncurses network nls noamazon nptl nvidia -odbc ogg oggvorbis on-the-fly-crypt opengl pam pcmcia pda pdflib png ppds qt quicktime radiotap rdesktop readline -real -samba -scanner sdk sdl skey slp snmp spell sse ssl svg -svga szip tcpd -threads tiff truetype truetype-fonts type1-fonts unicode usb userlocales -v4l -v4l2 vcd visualization vorbis wifi win32codecs wxwindows -xcomposite xine xml xscreensaver xvid zeroconf zlib x86"
```

Pozdrawiam też

----------

## Crasher

Nie wiem czy dobrze wnioskuje, ale teraz przy kompilacji programow uzywane sa te flagi USE, ktore masz ustawione w menu.conf, tak? Czyli jak dodam tam sobie np. SSL, a program takie cos obsluguje, to skompiluje go z obsluga SSL'a?

Czy moge te flagi zmieniac juz w czasie tego jak mam postawiony system i pozniej wszystko jakos przekompilowac, zeby sie pozmienialo pod dane flagi?

----------

## Gabrys

Tak. Aby zobaczyć z jakimi flagami skompiluje się program, wpisz emerge -pv grupa/pakiet

Flagi wyróżnione na zielono, to te, które się zmienią od czasu ostatniej kompilacji. Wyróżnione znakiem %, to flagi, których obsługa została ostatnio dodana do ebuilda.

Jeśli się zastanawiasz jak traktowane są flagi USE z różnych miejsc, odpowiadam:

1. Bierzemy domyślne flagi USE (siedzą gdzieś w /usr/portage i są podlinkowane chyba do /etc/make.profile).

2. Przesłaniamy flagi USE flagami z /etc/make.conf (nie ustawione ani na "+" ani na - są nadal z 1.).

3. Dla danego pakietu pobieramy linijkę z /etc/portage/packages.use, np.:

games-sports/foobillard -sdl

Oznacza, że niezależnie od ustawień domyślnych i dla całego systemu w /etc/make.conf foobillard zostanie skompilowany bez obsługi SDL.

dev-lang/php -* gd unicode xml cli

-* oznacza wyłączenie wszystkich flag, zatem z takim wpisem w /etc/portage/packages.use PHP zostanie skompilowane TYLKO z obsługą gd, unicode, xml i cli (czyli wersja commandline'owa bez integracji z serwerem WWW, gdybyś był zainteresowany  :Wink: ).

To Ci powinno starczyć, ażeby w pełni elastycznie kompilować potrzebne programy.

----------

## taopai

 *Crasher wrote:*   

> Nie wiem czy dobrze wnioskuje, ale teraz przy kompilacji programow uzywane sa te flagi USE, ktore masz ustawione w menu.conf, tak?

 

na chlopski rozum to jest tak, że flagi USE mowią czego będzie używał dany program, a portage w razie czego to dociągnie i doinstaluje

 *Crasher wrote:*   

> Czyli jak dodam tam sobie np. SSL, a program takie cos obsluguje, to skompiluje go z obsluga SSL'a?

 

tak. i jeśli chcesz, żeby tylko jeden program był skompilowany z obsługą SSL, to zamiast wpisywać tu w /etc/make.conf, wpisujesz to w pliku /etc/portage/package.use, np:

```
net-misc/wget ssl -ipv6
```

 *Crasher wrote:*   

> Czy moge te flagi zmieniac juz w czasie tego jak mam postawiony system i pozniej wszystko jakos przekompilowac, zeby sie pozmienialo pod dane flagi?

 

tak, ale musisz pamiętać o tym, żeby ręcznie usunąć zbędne zależności. niby są "emerge --clean" i "emerge --depclean:, ale ZTCW są zepsute i mogą namieszać w systemie.

pozdrawiam,

tao

[EDIT]spóźniłem się  :Smile: 

----------

## Crasher

Poki co nie mam pojecia jak recznie usuwac zaleznosci, ale z czasem pewnie wszystkiego sie dowiem i wszystko zrozumiem. Sporo sie wszystkiego naczytalem i narazie chyba nie wszystko do mnie dociera  :Smile: 

Po swojemu zrozumialem to tak:

1. Ja nie ustawie zadnych flag USE to przekompiluje mi program z domyslnymi

```
#emerge costam
```

2. Jak ustawie flagi w make.conf to uzyje tylko tych, ktore tam podalem.

3.#USE="ssl mp3 3dnow" emerge costam - uzyhe flag, ktore wpisalem w USE?

4. /etc/portage/package.use - czy w tym pliku dostepne sa wszyskie programy dostepne w portage? Czyli jak tam sobie dopisze, przed tym jak jeszcze nie mam tego progsa cos takiego 

```
net-misc/wget ssl -ipv6
```

i pozniej dam #emerge wget to przekompiluje go tylko z ssl czy wezmie z tych domyslnych + ssl bez ipv6?

A jak to zrobic jak mam juz ten program i mi sie zachcialo dodac jakas tam flage, ktorej nie ma, albo jakas zabrac? 

Wielkie dzieki za pomoc, naprawde jestescie nieocenionym zrodlem wiedzy.

Pozdrawiam

----------

## Gabrys

 *Crasher wrote:*   

> Poki co nie mam pojecia jak recznie usuwac zaleznosci, ale z czasem pewnie wszystkiego sie dowiem i wszystko zrozumiem. Sporo sie wszystkiego naczytalem i narazie chyba nie wszystko do mnie dociera 
> 
> Po swojemu zrozumialem to tak:
> 
> 1. Ja nie ustawie zadnych flag USE to przekompiluje mi program z domyslnymi
> ...

 

Tak

 *Quote:*   

> 3.#USE="ssl mp3 3dnow" emerge costam - uzyhe flag, ktore wpisalem w USE?

 

Tak, ale nie jest to polecane.

 *Quote:*   

> 
> 
> 4. /etc/portage/package.use - czy w tym pliku dostepne sa wszyskie programy dostepne w portage? Czyli jak tam sobie dopisze, przed tym jak jeszcze nie mam tego progsa cos takiego 
> 
> ```
> ...

 

Tak

 *Quote:*   

> A jak to zrobic jak mam juz ten program i mi sie zachcialo dodac jakas tam flage, ktorej nie ma, albo jakas zabrac? 

 

Zmieniasz w /etc/portage/packages.use, po czym:

emerge -1 pakiet (zamiast -1 może być --oneshot, jeśli to do Ciebie bardziej przemawia).

Teraz trochę biadolenia co do punktu 3.

Jeśli zechciałbyś kiedyś zrobić sobie upgrade systemu, robimy to tak:

emerge --update --deep --newuse world

emerge <- wiadomo

--update <- aktualizuj

--deep <- akutalizuj RÓWNIEŻ zależności

--newuse <- sprawdź, czy dla jakichś pakietów nie zmieniono flag USE.

Jeśli dasz:

USE="-abc xyz" emerge grupa/pakiet

a w /etc/portage/package.use masz:

grupa/pakiet abc -xyz

to po emerge -uDN world (skrót od powyższego) emerge będzie chciał przekompilować pakiet z opcjami, które ma w pliku.

Mam nadzieję, że jest to dość jasne. Podobnie ogólnie nie należy robić takiego triku, aby zainstalować program z gałęzi ~x86:

ACCEPT_KEYWORDS="~x86" emerge cośtam

Bo po emerge -uDN world znowu będzie chciał przywrócić starą (x86 zamiast ~x86) wersję.

Lepiej dodać taki wpis do /etc/portage/package.keywords:

=grupa/pakiet-wersja

EDIT: czytałeś Gentoo Handbook? Bo mam wrażenie, że wszystko co mówię, tam już jest opisane jasno i po polsku. Mam nadzieję, że tylko konfrontujesz wiedzę stamtąd, albo uważasz, że coś jest tam niejasno napisane, więc się dopytujesz.

----------

## Crasher

Czytam Gentoo Handbook'a na bieżaco z instalacja. Bardzo duzo mi teraz wyjasniles i lapie w koncu o co chodzi. 

Nie wiem tylko jeszcze jednej rzeczy. Jak sobie zrobie tego update'a z --deep to jak w /etc/portage/package.use zmienilem flagi use czyli jakies dodalem, jakies odjalem to on te zaleznosci, albo doda, albo powywala, tak? 

Dzieki wielkie za pomoc. Biore sie za instalowanie jaja i za jego kompilacje, a to pewnie troszke potrwa, bo to moj pierwszy raz  :Smile: 

Aha, tak BTW jak cos zle skompiluje i mi sie nie uruchomi system, to moge jakos podjac probe ponownej kompilacji?

Pozdrawiam

..::Milu Edit: orty!

----------

## Gabrys

Doda tak, powywala nie.

Ponowna kompilacja? Tak, LiveCD, chroot itd., tylko przeskakujesz od razu do konfiguracji kernela.

----------

## Raku

 *Gabrys wrote:*   

> EDIT: czytałeś Gentoo Handbook? Bo mam wrażenie, że wszystko co mówię, tam już jest opisane jasno i po polsku. Mam nadzieję, że tylko konfrontujesz wiedzę stamtąd, albo uważasz, że coś jest tam niejasno napisane, więc się dopytujesz.

 

wydaje mi się, że wszystko zostało już przez kogoś opisane w handbooku, naszym faq, na forum, na gentoo-wiki oraz w manach do portage. Tak więc moja rada do uzytkownika Crasher: mocne okulary i miłej lektury i trochę więcej samodzielności w rozwiązaywaniu problemów / eksperymentowaniu.

----------

## Crasher

No to ubieram moje okulary i biore sie do dalszego czytania. Odpowiedzcie mi tylko na to pytanie z ta kompilacja jajka jeszcze.. 

Pozdrawiam, dzieki za wszystko.

----------

## kurak

Witam, temat pewnie rozdmuchany bardzo, ale ja jakos nie moge znalezc na forum, mozecie mi pomoc z dobraniem odpowiednich cflags dla mojego procka?

```
kurak ~ # cat /proc/cpuinfo

processor       : 0

vendor_id       : AuthenticAMD

cpu family      : 6

model           : 8

model name      : AMD Athlon(tm) XP 2000+

stepping        : 1

cpu MHz         : 1674.711

cache size      : 256 KB

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 1

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow up ts

bogomips        : 3352.53
```

a w make.conf mam tak:

```
CFLAGS="-s -O2 -finline-functions -march=athlon-xp -mtune=athlon-xp -pipe -fomit-frame-pointer -m3dnow -funroll-loops -msse -mmmx"
```

----------

## Arfrever

Która wersja GCC?

"-march=X" implikuje "-mtune=X", więc "-mtune=athlon-xp" jest w tym wypadku zbędne.

Jaką masz chęć ryzykowania?

Sveikinu

Arfrever

----------

## kurak

gcc-4.1.1

----------

## Arfrever

Nie odpowiedziałeś na pytanie "Jaką masz chęć ryzykowania?", więc zgaduję, że odpowiedź jest "Bardzo dużą"  :Twisted Evil:  .

Proponuję:

```
CFLAGS="-march=athlon-xp -pipe -O3 (-s) -fforce-addr -finline-limit=1200 -fivopts -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -ftracer -ftree-loop-im -ftree-loop-ivcanon -ftree-loop-linear -ftree-vectorize -funroll-loops (-fvisibility=hidden) -fweb -m3dnow -msse -mmmx -DG_DISABLE_ASSERT -DNDEBUG"

CXXFLAGS="${CFLAGS} (-fvisibility-inlines-hidden)"
```

Niestety z podobnymi flagami miałem raz "internal compiler error" podczas budowania pewnego pakietu.

W nawiasach okrągłych wpisałem flagi zmniejszające widoczność, których ja bym nie stosował.

Z "-fforce-addr" nie da się zbudować pakietu dev-lang/spidermonkey.

Ogólnie polecam:

```
man gcc
```

Sveikinu

Arfrever

----------

## mbar

A jeszcze lepiej będzie: -O9 -fomg-optimize -fkeep-programmers-inline -vomit-frame-pointer -mremove-slow-code -Wno -stupid-warns

Też przez to przechodziłem na początku. Tylko, że w któryms momencie nawet mi MC sypał segfaultami, a o X mogłem tylko pomarzyć.   :Wink: 

Teraz używam -O2 -march=... -pipe -fomit-frame-pointer i do tego hashstyle=both (polecam forum Unsupported) i mój desktopowy system jest znacznie bardziej interaktywny, niż wszystkie -O3 -unroll itp itd.

To jest coś pięknego jako bajka z morałem: https://bugs.gentoo.org/show_bug.cgi?id=74072

----------

## arsen

Wątek "cflags dla AMD Athlon XP 2000+" w całości przeniesiony do miejsca w którym powinien występować, wystarczy jeden wątek o flagach.

----------

## Gabrys

Ktoś wspomniał o -O2 -pipe -fomit-frame-pointer. Też używam tego zestawu, bo większa optymalizacja wprawdzie oszczędza procesor, ale wielkość binarki rośnie, więc czas potrzebny na załadowanie pliku też jest większy, więc przy szybkich procesorach, gdy praktycznie nie wykorzystujemy 20% czasu procesora, chyba agresywniejsze flagi nie mają sensu.

----------

## Yatmai

Może by poskładać małe how-to ? Jako pierwszy post, czy w ogóle przykleić osobny temat.

Oczywiście jako punkt pierwszy dupny transparent, że 

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

 w zupełności wystarczy każdemu, a potem jakieś krótkie komentarze odnośnie idei i sensu stosowania flag jak np -O2/3, -march, -mtune czy -fpeel-loops  :Smile: 

----------

## Gabrys

Przecież jest na Gentoo-Wiki.com SAFE CFLAGS/CXXFLAGS. IMO starczy.

----------

## kurak

hm, sporo tu tego, nie jestem doswiadczony w kwestii flag, ale moglby mi ktos powiedziec jakie flagi beda najoptymalniejsze dla mogjego procesora? bo juz zglupialem  :Neutral: 

----------

## Yatmai

 *Gabrys wrote:*   

> Przecież jest na Gentoo-Wiki.com SAFE CFLAGS/CXXFLAGS. IMO starczy.

 

 *Quote:*   

> hm, sporo tu tego, nie jestem doswiadczony w kwestii flag, ale moglby mi ktos powiedziec jakie flagi beda najoptymalniejsze dla mogjego procesora? bo juz zglupialem 

 

No właśnie chyba nie bardzo starczy  :Very Happy: 

----------

## Raku

moje podsumowanie pytań o najlepsze flagi i najlepszą optymalizację pod procesor, tak aby idelanie go wykorzystać:

od kilku dni mam zainstalowanego na 3 komputerach (Pentium 4 2,8GHz HT, Pentium-M 1,7GHz, Athlon-XP 1600+) Archlinuksa. Dystrybucja optymalizowana pod i686. Do tej pory korzystam wyłącznie z binarnych, gotowych pakietów (włącznie z kernelem - 2.6.17-ARCH),  nic sam nie kompilowałem. System działa tak samo szybko jak Gentoo, a jesli są jakieś różnice (na korzyść Gentoo czy Archa), to są one IMO niezauważalne bądź pomijalne.

Moja puenta: te wszystkie flagi to sobie można wsadzić ... i wężykiem. W większości przypadków optymalizacja kodu, jaką daje samodzielna kompilacja, daje pomijalne efekty w zwiększeniu wydajności. Poszedłbym dalej w swoim twierdzeniu: w większości przypadków samodzielna kompilacja pogarsza wydajność (jeśli używa się dziwnych cudownych flag-wynalazków).

Myślę, że tzw. safe flags z wiki będą najoptymalniejsze dla większości zastosowań.

----------

## Drwisz

Brawo Raku!

Już dawno zwracałem na to uwagę. Mam wrażenie, że tu występuje proces który wygląda tak: "Jeśli mam nowe flagi optymalizacji to system musi działać szybciej". I subiektywnie działa. Nie bierze się pod uwagę czasów z przed i po zmianie flag, zmian w systemie, oraz zmian wersji oprogramowania. Jeśli zbudujemy nowy system oparty o nowe flagi, to suma doświadczeń zebranych z konfiguracji obu systemów pozwala na jego lepszą optymalizację, i tu jest pewnie w 90% pies pogrzebany. Po za tym, zysk 0.1 sek w tym i w tamtym programie, to jest wynik poniżej reakcji organizmu na bodziec wzrokowy czyli niezauważalny. Jak dla mnie agresywna optymalizacja to zbyt często dokładanie spoilerów do "malucha". Niestety nie ma uniwersalnej metody na sprawdzanie wyników. Pozostaje subiektywna ocena.

Raku masz ort  :Twisted Evil: 

od raku: ort.  :Wink: 

----------

## Gabrys

Popieram całkowicie, poza przytoczoną wartością: 0,1 sekundy to czas, który można zauważyć. Np. okienko konfiguracji włączające się w poniżej 0,1 sekundy wydaje się pojawiać od razu, a w granicach 0,2 sekundy już sprawia wrażenie "lekko spóźnionego".

----------

## kurak

Witam, nie uzyskalem odpowiedzi na to jakich flag uzyc dla mojego procesora... w tym samym czasie kolega naipsal dosc ciekawy skrypcik i zrodlo do sprawdzania flag.. do pobrania jest tutaj http://maslysz.com/~kurak/test.tar

Opis: rozpakowac test.tar do jednego katalogu. beda to dwa pliki - cflags i test.c, Jak tego uzywac? bardzo prosto! najpier jednak trzeba zapewnic jednakowe warunki dla testowania, ja preferuje wylaczenie x'ow, tak azeby procesor byl jak najmniej obciazany i z palca klepiemy

```
 ./cflags -nasze flagi
```

 skrypcik kompiluje plik test.c i sprawdza czas jego wykonalnosci a zarazem rozmiar po kompilacji. Fatk, trzeba troche spedzic czasu, ale ja sobie umiejetnie dobralem flagi i teraz czas uruchamiania jest duuuzo krotszy niz wczesniej, a rozmiar po kompilacji jest mniejszy przez co zmniejsza sie zuzycie pamieci  :Smile:  Polecam, bo mozna sobie dosc fajnie dobrac flagi do wlasnych potrzeb.

PODZKIEWANIA DLA  KID'A  :Smile: 

----------

## Raku

 *Drwisz wrote:*   

> Raku masz ort 

 

jeśli chodizło o 'korzystać', to była literówka (r było, tylko nie stało przy z  :Wink: . Jeśli coś innego - proszę o info na priv, bo nie mogę znaleźć  :Smile: 

----------

## Arfrever

```
LDFLAGS="-Wl,--as-needed -Wl,-enable-new-dtags
```

Czy te flagi są bezpieczne? Jakie macie ewentualne z nimi doświadczenia?

Sveikinu

Arfrever

----------

## no4b

-enable-new-dtags jest w gentoo afaik domyślnie włączane, --as-needed działa dobrze jeżeli nie używasz aplikacji gtk/gtk2 (zwykle się z nią po prostu nie kompilują).

----------

## mbar

 *kurak wrote:*   

> i teraz czas uruchamiania jest duuuzo krotszy niz wczesniej

 

Wyniki proszę.

----------

## nelchael

 *Arfrever wrote:*   

> Proponuję:
> 
> ```
> CFLAGS="-march=athlon-xp -pipe -O3 (-s) -fforce-addr -finline-limit=1200 -fivopts -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -ftracer -ftree-loop-im -ftree-loop-ivcanon -ftree-loop-linear -ftree-vectorize -funroll-loops (-fvisibility=hidden) -fweb -m3dnow -msse -mmmx -DG_DISABLE_ASSERT -DNDEBUG"
> 
> ...

 

Nie zglaszaj nic na bugs.gentoo.org z tymi flagami, prosze.

----------

## arsen

Jak zgłosi to go sprowadzą na bugzilli na ziemie  :Smile: , a i aż się pochwale moimi super flagami   :Wink: 

```

CFLAGS="-O2 -march=pentium-m -pipe"

CXXFLAGS="-O2 -march=pentium-m -pipe"

```

Też jestem zdania że nawsadzanie wielu dziwnych flag robi więcej złego niż dobrego.

----------

## Arfrever

 *nelchael wrote:*   

>  *Arfrever wrote:*   Proponuję:
> 
> ```
> CFLAGS="-march=athlon-xp -pipe -O3 (-s) -fforce-addr -finline-limit=1200 -fivopts -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -ftracer -ftree-loop-im -ftree-loop-ivcanon -ftree-loop-linear -ftree-vectorize -funroll-loops (-fvisibility=hidden) -fweb -m3dnow -msse -mmmx -DG_DISABLE_ASSERT -DNDEBUG"
> 
> ...

 

To był żart. Ja tych flag nie używam.

 *no4b wrote:*   

> --enable-new-dtags jest w gentoo afaik domyślnie włączane

 

Obyś się nie mylił.

 *no4b wrote:*   

> --as-needed działa dobrze jeżeli nie używasz aplikacji gtk/gtk2 (zwykle się z nią po prostu nie kompilują).

 

Czy przykładowo samo gtk+ lub glib też się nie zbuduje?

Chciałbym się dowiedzieć, co sądzicie o flagach:

```
CFLAGS="-floop-optimize2 -fpeel-loops -funswitch-loops"
```

 :Question: 

 *info gcc wrote:*   

> `-floop-optimize'
> 
>      Perform loop optimizations: move constant expressions out of
> 
>      loops, simplify exit test conditions and optionally do
> ...

 Last edited by Arfrever on Wed Aug 16, 2006 11:12 pm; edited 1 time in total

----------

## kurak

No wiec tak

Na poczatek flagi proponowane na gntoo-wiki jak i na forum

```

kurak ~ # ./cflags -O2 -march=athlon-xp -pipe -fomit-frame-pointer

  KIDNet Software Ltd

  Flags efficiency check

 * Script will check efficiency of:

 * "-O2 -march=athlon-xp -pipe -fomit-frame-pointer"

 * We will use "test.c" as benchmark.

 * Compiling "test.c" benchmark file ... ...                                                                                            [ ok ]

 * Checking flags efficiency - DO NOT TOUCH ANYTHING :) ...                                                                             [ ok ]

 *   Process finished successfully.

     Current code execution time : 0m59.917s

     Current size of executable  : 6485 bytes

```

po dodaniu kilku flag, u mnie wyglada to tak:

```
kurak ~ # ./cflags -s -O2 -march=athlon-xp -pipe -fomit-frame-pointer -m3dnow -fno-align-jumps -fno-align-labels -funroll-all-loops -mfpmath=sse -msse -mmmx

  KIDNet Software Ltd

  Flags efficiency check

 * Script will check efficiency of:

 * "-s -O2 -march=athlon-xp -pipe -fomit-frame-pointer -m3dnow -fno-align-jumps -fno-align-labels -funroll-all-loops -mfpmath=sse -msse -mmmx"

 * We will use "test.c" as benchmark.

 * Compiling "test.c" benchmark file ... ...                                                                                            [ ok ]

 * Checking flags efficiency - DO NOT TOUCH ANYTHING :) ...                                                                             [ ok ]

 *   Process finished successfully.

     Current code execution time : 0m7.527s

     Current size of executable  : 3588 bytes

```

Do roznicy nie musze nikogo przekonywac, poprostu czas jest krotszy o 8x !! to jest bardzo duzo! a rozmiar skompilowanego zrodla jest prawie o polowe mniejszy.. wiec dobor flag jest chyba bardzo istotny. Jesli sie myle, prosze o pomoc

Pozdrawiam  :Wink: 

----------

## Gabrys

Oczywiście, że się mylisz. Po prostu weź jakąś aplikację z portage. Skompiluj ją z flagami proponowanymi na gentoo-wiki i przez nas, a potem z tymi, które wymyśliłeś i porównaj sobie czasy uruchamiania i działania programów. Jakieś sztuczne testy nas nie przekonują, chyba, że robimy je dla czystej zabawy, jak np. glxgears contest lub hdparm contest.

----------

## Arfrever

 *kurak wrote:*   

> (...)
> 
> ```
> (...)
> 
> ...

 

Proponuję usunąć flagę "-funroll-all-loops". Oprócz tego, jeśli się nie mylę, to ten skrypt z plikiem test.c napisane przez twojego kolegę nie sprawdzają w ogóle flag m. in. "-ftree-*".

Sveikinu

Arfrever

----------

## kurak

A dlaczego usunac ta flage "-funroll-all-loops" powoduje jakies odchylenia w dzialaniu systemu? co do tego test.c, to nie ja pisalem, nie mam takich wiadomosci zeby cokolwiek napisac..  :Sad: 

----------

## Arfrever

 *kurak wrote:*   

> A dlaczego usunac ta flage "-funroll-all-loops" powoduje jakies odchylenia w dzialaniu systemu?

 

 *info gcc wrote:*   

> `-funroll-loops'
> 
> Unroll loops whose number of iterations can be determined at
> 
>      compile time or upon entry to the loop.  `-funroll-loops' implies
> ...

 

Sveikinu

Arfrever

----------

## Arfrever

 *no4b wrote:*   

> --as-needed działa dobrze jeżeli nie używasz aplikacji gtk/gtk2 (zwykle się z nią po prostu nie kompilują).

 

Przebudowałem GLib 2.10.3, GTK+ 2.8.20-r1 i GIMP 2.3.10 i nie było żadnych błędów. Użyłem takie stabilne flagi:

```
CFLAGS="-march=(...) -pipe -O2 -finline-functions -finline-limit=800 -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -funswitch-loops -DG_DISABLE_ASSERT -DNDEBUG"

CXXFLAGS="-march=(...) -pipe -O2 -finline-functions -finline-limit=800 -floop-optimize2 -fno-ident -fomit-frame-pointer -fpeel-loops -fprefetch-loop-arrays -frename-registers -funswitch-loops -DG_DISABLE_ASSERT -DNDEBUG"

LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--sort-common"
```

Wszystko działa świetnie. Mam GCC 4.1.1 i GNU Binutils 2.17.

Sveikinu

Arfrever

----------

## mirek

Polecenie cpuinfo pokazuje mi nastepujace flagi

```
cat /proc/cpuinfo

......

flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 t tm pbe up cid xtpr

.......

```

Czy to znaczy, ze wszystkie te flagi mam miec zapisane w make.conf?

----------

## mbar

Chyba w komentarzu.

----------

## Crenshaw

 *mirek wrote:*   

> Polecenie cpuinfo pokazuje mi nastepujace flagi
> 
> ```
> cat /proc/cpuinfo
> 
> ...

 

Gdzie byles jak nabijales te swoje posty? NIE, NIE i jeszcze raz NIE!

----------

## kurak

Witam, zakupilem procka core 2 duo E6300, google nie wiele mi chce powiedziec, jakie cflags ustawic dla tego procesora? wszyscy trabia ze wspaniale obsluguje sse4, ale jaka to flaga? obecnie wyglada to tak:

```
CHOST="i686-pc-linux-gnu"

EMERGE_DEFAULT_OPTS="-b"

CFLAGS="-s -O2 -march=pentium-m -pipe -fomit-frame-pointer -mmmx -finline-functions -funroll-loops -msse -fno-align-jumps -fno-align-labels -mfpmath=sse"

CXXFLAGS="${CFLAGS}"
```

a procek to takie cos:

```
kurak ~ # cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 15

model name      : Intel(R) Core(TM)2 CPU          6300  @ 1.86GHz

stepping        : 6

cpu MHz         : 2445.952

cache size      : 2048 KB

physical id     : 0

siblings        : 2

core id         : 0

cpu cores       : 2

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 10

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm

bogomips        : 4896.02

processor       : 1

vendor_id       : GenuineIntel

cpu family      : 6

model           : 15

model name      : Intel(R) Core(TM)2 CPU          6300  @ 1.86GHz

stepping        : 6

cpu MHz         : 2445.952

cache size      : 2048 KB

physical id     : 0

siblings        : 2

core id         : 1

cpu cores       : 2

fdiv_bug        : no

hlt_bug         : no

f00f_bug        : no

coma_bug        : no

fpu             : yes

fpu_exception   : yes

cpuid level     : 10

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm

bogomips        : 4891.48
```

bylbym bardzo wdzieczny gdyby ktos mogl mi pomoc  :Smile: 

----------

## Gabrys

-mmmx -msse itd nie wpisuje się do /etc/make.conf. Wpisuje się za to do USE jako mmx sse itd.

http://gentoo-wiki.com/Safe_Cflags#Intel_Core_Solo.2FDuo_.28Yonah.29

----------

## Riklaunim

 *kurak wrote:*   

> 
> 
> CFLAGS="-s -O2 -march=pentium-m -pipe -fomit-frame-pointer -mmmx "
> 
> 

 

Nie powinieneś przekraczać flag zalecanych na gentoo wiki

Ja dla mnie flagi typu -finline-functions -funroll-loops -fno-align-jumps -fno-align-labels kwalifikują się do natychmiastowego wywalenia. Portage doda np. -funroll-loops tam gdzie jest potrzebna. Stosowanie różnych dziwnych flag globalnie zniszczy stabilność systemu i nie da magicznego przyśpieszenia. Ku przestrodze: http://funroll-loops.org i efekt link

----------

## Yatmai

 *Quote:*   

> Anyway you should check /proc/cpuinfo for pni (SSE3) string before using -msse3

 

Eee, chodzi o to, że 

```
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts ttp tm stc

```

To pni to jest właśnie sse3 ?  :Very Happy: 

----------

## kurak

Hmm, teraz to ja juz sam nie wiem, tzn ze najlepiej ustawic cflags z gentoo-wiki? bo jak sie bawilem na athlonie to sporo przyspieszalo z roznymi flagami.. ale nie wiem jak sie ma sprawa z tym core 2 duo.. z waszych wykladow wnioskuje, ze najlepiej uzyc 

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium-m -msse3 -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

----------

## Gabrys

 *kurak wrote:*   

> Hmm, teraz to ja juz sam nie wiem, tzn ze najlepiej ustawic cflags z gentoo-wiki? bo jak sie bawilem na athlonie to sporo przyspieszalo z roznymi flagami.. ale nie wiem jak sie ma sprawa z tym core 2 duo.. z waszych wykladow wnioskuje, ze najlepiej uzyc 
> 
> ```
> CHOST="i686-pc-linux-gnu"
> 
> ...

 

nom

----------

## roonek

a dla intel core 2 duo  w 64 bit wystarczy to ? :

CFLAGS="-march=nocona -O2 -fomit-frame-pointer -pipe"

CHOST="x86_64-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

do tego w make.conf ACCEPT_KEYWORDS="amd64"

i flaga USE="amd64" 

????

Czy nalezy dodac jakies inne ustawienia? Bo jakos dziwnie podczas emergowania 

system potrafi mi sie zwiesic jakimis dziwnymi bledami. i nie moge wtedy sie ponownie zalogowac do systemu (pyta o login i haslo ale juz nie wpuszcza....)

Zastanawiam sie co zrobilem nie tak :/

Moze ktos pomoze?

ps. (SMP wkompilowane w jadro oraz procesor type ET64M

----------

## karaluch

Procek stary wiec nie ma sie czym chwalic ale ja mam tak ustawione na Intel Pentium 4 1.8 / 400 / 512K. Jednak pisze w nieco innej sprawie, na samej gorze 13-tej strony jest link do pliku test.tar, a w nim skrypt to testowania roznych flag. Czytalem opinie ze jest to tylko takie strzelanie z palca ale zawsze mozna wyjsc z takich flag do dalszych testow. Czy ma ktos ten skrypt, jezeli tak to bardzo prosze o dzialajacy link.

```
# cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 15

model           : 2

model name      : Intel(R) Pentium(R) 4 CPU 1.80GHz

stepping        : 4

cpu MHz         : 2399.853

cache size      : 512 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 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm

bogomips        : 4802.31

clflush size    : 64
```

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium4 -O3 -fomit-frame-pointer -finline-functions -fforce-addr -mfpmath=sse,387 -s -pipe -ftracer -DNDEBUG"

CXXFLAGS="-march=pentium4 -O3 -fomit-frame-pointer -finline-functions -fforce-addr -mfpmath=sse,387 -s -pipe -ftracer -DNDEBUG"
```

----

Flagi numeryczne (Matlab): swego czasu czytalem o wersji Suse do obliczen numerycznych, w ktorej kosztem wodotryskow miano osiagnac jeszcze lepsze wyniki przy jakis tam obliczeniach... Ja chcialbym przesiasc sie z obliczen na XP wlasnie na obliczenia w programie na bazie Matlaba wlasnie na Gentoo. Do dyspozycji mam 2 kompy: Bartona 2.5@3.2 na nforce2 i wlasnie tego wyzej wspomnianego P4 1.8@2.4 na sis. Czy macie jakies doswiadczenia w takich operacjach, chcialbym wycisnac max moc ze swoich nie najnowszych procesorow tak aby liczyc jeszcze szybciej.... liczyc szybciej niz na windowsie :-))

----------

## Gabrys

W celu podniesienia bezpieczeństwa (obrona przed buffer-overflow): -fstack-protector (man gcc).

----------

## C1REX

```
CFLAGS="-march=native -msse3 -O2 -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

  USE="-gnome -gtk jpeg2k rar aac dts mpeg ffmpeg mpeq vorbis dvb dvd dvdr xvid -nls 3dnow X alsa -apm -arts

  audiofile bzip2 -cups -doc dri encode 3dnowext 3dnow mmx mmxext gstreamer hal ieee1394 jpeg qt4 kde nsplugin

   mmx mp3 -ipv6 mp4 motif nptl nptlonly bluetooth cdr realmedia wmp divx

  nsplugin ogg opengl pdf png qt real laptop artworkextra

  samba sdl sse sse2  tiff quicktime firefox mplayer

  truetype win32codecs xinerama zlib gif mng gmedia"

VIDEO_CARDS="nvidia v4l"

LINGUAS="pl"

ACCEPT_KEYWORDS="~x86"

MAKEOPTS="-j3"

```

Ktoś zna powody, dlaczego fomit-frame-pointer nie jest zalecany dla architektury 64bitowej?

----------

## unK

Nie nie jest zalecany, tylko na amd64 jest domyślnie włączany przez -O* (z tym, że nie pamiętam, od którego poziomu optymalizacji, ale na -O2 jest na bank).

----------

## SlashBeast

IIRC każdy poziom -O dodaje fomita.

----------

## C1REX

Ale dla każdej architektury, czy tylko dla procesorów 64bitowych?

http://gentoo-wiki.com/Safe_Cflags

Tutaj prawie wszędzie jest dodawana -fomit-frame-pointer. Wszędzie, poza kilkoma procesorami i tylko gdy kompilujemy pod 64bity.

Wszędzie jest -O2.

----------

## SlashBeast

Raczej dla każdej, tyle ze dla 32bitów x86 jest domyślnie wyłączony bo przeszkadza w debugowaniu.

----------

## C1REX

Przy 64 bitach nie ma dodanej tej flagi, bo w przeciwieństwie do 32bitów jest faktycznie automatycznie dodawana, czy może jednak faktycznie wpłynąć na stabilnąć softu.

Samo debugowanie raczej mi do nieczego nie jest potrzebne.

----------

## SlashBeast

 *Quote:*   

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

 

----------

## C1REX

No to dodanie tej flagi ręcznie pomimo włączenia O2 spowoduje jej zastosowanie nawet, jeśli spowoduje to problem z debugowaniem?

Natomiast niedopisanie tej flagi oddaje O2 decyzję o jej użyciu?

Rozumiem ten cytat, nie rozumiem jednak dlaczego na podanej przeze mnie stronie czasem jest ona wpisana jako bezpieczna, a czesem jej nie ma. I to pomimo zastosowania O2 w każdym jednym przypadku.

----------

## SlashBeast

Na niektórych architekturach przeszkazda ona debugowaniu, wtedy -O jej nie dodaje, ale jak się ją doda samemu, to wtedy jest, tak jest w przypadku x86.

----------

## C1REX

Czy Os faktycznie wpływa pozytywnie na szybkość odpalania softu dzięki mniejszej wielkości tak skompilowanego kodu?

Czy to prawda, że Sun, Apple i wiele innych firm używa Os?

----------

## Drwisz

 *C1REX wrote:*   

> No to dodanie tej flagi ręcznie pomimo włączenia O2 spowoduje jej zastosowanie nawet, jeśli spowoduje to problem z debugowaniem?
> 
> Natomiast niedopisanie tej flagi oddaje O2 decyzję o jej użyciu?
> 
> Rozumiem ten cytat, nie rozumiem jednak dlaczego na podanej przeze mnie stronie czasem jest ona wpisana jako bezpieczna, a czasem jej nie ma. I to pomimo zastosowania O2 w każdym jednym przypadku.

 

Bezpieczeństwo tej flagi zależy też od wersji kompilatora. We wcześniejszych gcc niż 4.0, zastosowanie jej w CXXFLAGS  mogło powodować niestabilność kodu.

Hmmm... Zabawiłem się przy okazji w archeologa forumowego. Jakieś 3-4 lata temu pierwsza odpowiedź na zapytanie: nie kompiluje się program xxx brzmiała: "usuń -fomit-frame-pointer z CXXFLAGS i puść od nowa". 

Tak z ciekawości: czy ktoś jeszcze grzebie w CFLAGS i CXXFLAGS prócz Karalucha?

Bo mam wrażenie, że teraz pytania są raczej wynikiem wpisów flag w USE. Jakoś chyba zmiękliśmy z wiekiem  :Twisted Evil: 

Ale mi się łezka zakręciła  :Smile:  te wspomnienia.

----------

## canis_lupus

Ja sądzę że juz po prostu wszyscy maja swój ulubiony zestaw flag, a nowi wszystko znajdą na forum...

----------

## SlashBeast

Większy przyrost prędkości odpalania zamiast Os da wam /usr na squashfs albo reiser4 z kompresja gzip czy lzo.

----------

## unK

 *Quote:*   

> Czy Os faktycznie wpływa pozytywnie na szybkość odpalania softu dzięki mniejszej wielkości tak skompilowanego kodu? 

 

wg moich obserwacji Os jest wolniejszy niż O2. no i tak ogólnie rzecz biorąc to flagi kompilatora są przereklamowane.

 *SlashBeast wrote:*   

> Większy przyrost prędkości odpalania zamiast Os da wam /usr na squashfs albo reiser4 z kompresja gzip czy lzo.

 

potwierdzam, sam mam / na reiser4 + lzo1 i działa toto bardzo ładnie i szybciej niż np. reiserfs.

----------

## canis_lupus

A który lepiej? squashfs czy kontrowersyjny reiser4 (podobno niestabilny i lubi jaja robić).

----------

## SlashBeast

Do squasha dochodzi konieczność używania aufs albo unionfs i okresowego tworzenia obrazu, jako, że squash jest readonly. Reiser4 robił mi jaja przy pracy, jakoś nie kochał u mnie httpd'ów, do cssów dodawał krzaki na koniec plików itp. jeszcze co widziałem to to, że montuje się wybitnie dłużej od reiserfs ale dawno go nie używałem, na nowej maszynie nie-do-pracy niedługo posadze gentoo z reiser4 i kompresja lzo, ma mniejsze wymagania czasu procesora od gzipa.

----------

## unK

Ja nie miałem żadnych problemów z reiser4 oprócz tego, że niedawno wyczyścił mi plik /var/lib/portage/world ;p Po tym wróciłem do reiserfs, ale już nie mogłem zdzierżyć tego filesystemu, bo co chwilę mi dysk mielił, to wróciłem do r4 i od razu postanowiłem wypróbować kompresję lzo i działa jak dotąd bardzo ładnie. No i system zamiast ~4GB zajmuje ~2.

----------

## SlashBeast

A jak to jest z openrc i rootfs na r4? Pamiętam, że za każdym razem gdy wracałem na r4 (nie bylo wtedy openrc) nie startował mi checkroot i potem pozostałe usługi twierdziły, ze skoro checkroot się nie odpalił to one też się nie odpalą, po chwili jednak się odpalały O_O a jak to jest teraz?

----------

## unK

 *SlashBeast wrote:*   

> A jak to jest z openrc i rootfs na r4? Pamiętam, że za każdym razem gdy wracałem na r4 (nie bylo wtedy openrc) nie startował mi checkroot i potem pozostałe usługi twierdziły, ze skoro checkroot się nie odpalił to one też się nie odpalą, po chwili jednak się odpalały O_O a jak to jest teraz?

 

W trybie serial jest ok, remontuje roota w trybie rw, w parallel nie chce, tzn. zatrzymuje się na "remounting root partition read/write...", więc po prostu dopisałem "rw" do linii kernel w grubie, w ten sposób checkroot jest pomijany i system bootuje się bez problemu.

----------

## C1REX

gentoo-sources ma domyślnie zaznaczone...

```
General setup  --->  

   [*] Optimize for size (Look out for broken compilers!)  
```

.. co oznacza, że jest użyta flaga Os zamiast O2.

BTW: W jaki sposób Os może być mniej bezpieczne od O2, skoro ma te same flagi, tylko mniej?

----------

## n0rbi666

 *C1REX wrote:*   

> gentoo-sources ma domyślnie zaznaczone...
> 
> ```
> General setup  --->  
> 
> ...

 

ZTCW -Os to jest prawie to samo, co O2 (tylko wywalone sa falingi wszystkie) + flagi zmniejszające rozmiar binarki

Z tego co pamiętam,  w gcc4.0 (albo 4.1) zestaw flag -O2 -ffast-math działał bez problemu, a -Os -ffast-math już sprawiał problemy - czyli -Os to nie jest do końca O2  :Smile: 

A co do opcji w kernelu : pamiętam, że miałem z tym jakieś problemy (jakie - zapomniałem  :Razz:  ale wiem, ze coś z tym było, więc już nie używam :] )

----------

## SlashBeast

Z flagami bywa różnie, mi xorg-server wywalał się zaraz po odpaleniu z -O2 -funroll-loops -ftree-vectorize a z -O3 -funroll-loops działał, co zabawniejsze było to robione na gcc 4.3.0 gdzie O3 zawiera ftree-vectorize.

----------

## C1REX

Używa ktoś -march=native? 

Jakie są różnice względem ustawienia swojego procesora? 

Jak u siebie zmieniłem, to przy rekompilacji systemu któryś tam program wyskoczył z błędem, że nie mam kompilatora.

Przestawiłem na -march=athlon64 i się skompilował. 

Na gentoo wiki -march=native jest rekomendowana jako bezpieczna.

Oczywiście użyłem nowego gcc z serii 4.2.

----------

## unK

 *C1REX wrote:*   

> Używa ktoś -march=native?

 

ja.

 *C1REX wrote:*   

> Jakie są różnice względem ustawienia swojego procesora? 

 

wcześniej miałem march=athlon-xp, a native ustawia mi athlon-4, ale cholera wie, czym to się różni.

edit: uhm, man gcc twierdzi, że to to samo   :Laughing: 

----------

## SlashBeast

nie pokazałeś błędu to nie bardzo jest jak stwierdzić, czy to wina march native, uzywam native na każdej maszynie w domu.

native bazuje pewnie na /proc/cpuinfo, widząc np. w flags pni dodaje msse3, widząc sse, sse2 dodaje msse i msse2 i tak dalej.

----------

## C1REX

Po kompilacji gcc z miejsca zabrałem się za rekompilację systemu. Zgodnie z instrukcją:

http://www.gentoo.org/doc/pl/gcc-upgrading.xml

O ile mi jednak wiadomo, to po aktualizacji gcc trzeba aktualizować również i glibc.

Aktualnie leci kompilacja w/w programu. Później będę w stanie stwierdzić, czy błąd wynikał z winy kompilatora, czy z dokumentacji.

----------

## SlashBeast

Przy aktualizacjach z gcc 4 do innej "czwórki" nie widze sensu bawić się w to o czym mówi ten poradnik, tyle co użyc gcc-config i zmienić wersje gcc którą będzie używał system

----------

## C1REX

Nie wiem skąd, ale miałem jakieś resztki w systemie z 486. 

http://www.gentoo.org/doc/pl/change-chost.xml

Zgodnie z instrukcją pousuwałem wszelkie ślady starej technologii.

EDIT: Nie jestem pewny, ale to chyba jest błąd stage3 i686. Przynajmniej najnowszego.

Sprawdźcie, czy też nie macie śladów i386, i486 w swoim systemie.

```
grep -r 86 /etc/env.d/
```

EDIT2: Zgadza się. Jakiś problem z tym hostem miałem. Teraz mi się wszystko kompiluje jak powinno.

Arfrever: Ortografia

----------

## C1REX

 *C1REX wrote:*   

> 
> 
> EDIT2: Zgadza się. Jakiś problem z tym hostem miałem. Teraz mi się wszystko kompiluje jak powinno.
> 
> Arfrever: Ortografia

 

Chostem.

CHOST="i686-pc-linux-gnu"

BTW: Używa ktoś LDFLAGS? podobno nawet niektórzy developerzy je mają. Są podobno dość bezpieczne, ale niewspierane. 

Ma ktoś jakieś informacje o wpływie na wydajność i stabilność?[/code]

----------

## unK

 *C1REX wrote:*   

> BTW: Używa ktoś LDFLAGS

 

Tak, od daawna, nic się nigdy nie zepsuło przez nie.

```
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"
```

----------

## n0rbi666

```
LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
```

Mam tak od dłuższego czasu, cały system przekompilowany tak i wszysko działa  :Smile: 

Z tego co pamiętam, to jeszcze 

```
-Wl,--sort-common i -Wl,--enable-new-dtags
```

 są bezpieczne - ale gdzieś wyczytałem, że portage/binutils je domyślnie dodaje (?) Tylko teraz nie pamiętam, gdzie to czytałem  :Smile: 

----------

## SlashBeast

Szkoda, że nie dodałem LDFLAGS gdy wczoraj robiłem -e world, no nic.

Powie mi ktoś jak są oddzielane konkretne LDFLAGS? Spacją czy przecinkiem, i dlaczego macie po kilka razy -Wl ?

----------

## n0rbi666

 *SlashBeast wrote:*   

> Powie mi ktoś jak są oddzielane konkretne LDFLAGS? Spacją czy przecinkiem, i dlaczego macie po kilka razy -Wl ?

  Generalnie można albo spacją, np.

```
Wl,-O1 -Wl,--hash-style=gnu
```

 (tylko przed każdą trzeba dawać właśnie to -Wl)

Albo przecinkiem, np.

```
-Wl,-O1,--hash-style=gnu,--as-needed
```

----------

## C1REX

https://forums.gentoo.org/viewtopic.php?t=67777

Link przypominam, bo kilka lat temu podałem go w tym temacie : )

----------

## Arfrever

 *n0rbi666 wrote:*   

> Z tego co pamiętam, to jeszcze 
> 
> ```
> -Wl,--sort-common i -Wl,--enable-new-dtags
> ```
> ...

 

Binutils w Gentoo posiadają specyficzną łatkę, która domyślnie włącza działanie powodowane przez -Wl,--enable-new-dtags.

Nie dotyczy to -Wl,--sort-common.

----------

## C1REX

Czy jeśli skompiluje się program pod 386 bez żadnych dodatkowych funkcji procesora, to binarka będzie mniejsza od wersji skompilowanej pod core duo ze wszystkimi funkcjami, jakie obsługuje ten procesor?

----------

## Arfrever

 *C1REX wrote:*   

> Czy jeśli skompiluje się program pod 386 bez żadnych dodatkowych funkcji procesora, to binarka będzie mniejsza od wersji skompilowanej pod core duo ze wszystkimi funkcjami, jakie obsługuje ten procesor?

 

Nie. Instrukcje procesora nie są zdefiniowane w plikach wykonywalnych.

----------

## C1REX

LDFLAGS mają jakiś poważniejszy wpływ na wydajność i/lub wielkość binarki?

Czy może to praktycznie nic nie daje i jest grą w rosyjską ruletkę. Ryzykowanie o nic.

----------

## mziab

 *C1REX wrote:*   

> LDFLAGS mają jakiś poważniejszy wpływ na wydajność i/lub wielkość binarki?
> 
> Czy może to praktycznie nic nie daje i jest grą w rosyjską ruletkę. Ryzykowanie o nic.

 

Nie chodzi tyle o wielkość binarki, co o to, żeby konsolidator miał mniej roboty przy ładowaniu programu.

Osobiście używam globalnie:

```
LDFLAGS="-Wl,-O1"
```

I to jest zupełnie bezpieczne,  z tego co mi wiadomo.

Dla zaufanych pakietów (m.in. KDE, a na innej maszynie Gnome) mam z kolei:

```
-Wl,-O1,--as-needed
```

Kiedyś --as-needed było uważane za potencjalnie niebezpieczne, ale to już chyba przeszłość. Znam parę osób, które mają cały system z --as-needed i wszystko działa. A flaga ma też ten pozytywny skutek, że przy zmianie ABI będzie mniej rzeczy do revdepowania. Jakiś czas temu, przy aktualizacji expata miałem dzięki temu dużo mniej roboty.

----------

## C1REX

CFLAGS="-DNDEBUG -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"

Ktoś wie, jak w dzisiejszych czasach są bezpieczne te flagi. 

Co prawda miałem kiedyś skompilowany cały system z max agresywnymi flagami i jakoś system działał, ale na siłę szukać problemów nie zamierzam.

Zaznaczę, że nie zależy mi specjalnie na szybkości działania np. gzipa, tylko, by mi aplikacje szybko wstawały i system nie mulił od zapchanego ramu.

Tu jest ciekawy moim zdaniem artykuł o flagach (bardzo stary)

http://repo.dobremiasto.net/articles/wstep_do_kompilacji_oprogramowania

--------------------------------------------

Właśnie zrobiłem backup systemu i zaraz rzucam emerge -e world z:

```
CFLAGS="-march=native -Os -fomit-frame-pointer -s -pipe -DNDEBUG -DG_DISABLE_ASSERT"

CXXFLAGS="-march=native -Os -s -pipe -DNDEBUG -DG_DISABLE_ASSERT"

LDFLAGS="-Wl,-O1 -Wl,--sort-common -s"
```

Jutro powiem, czy się system uruchamia. (o ile zdąży - 342 pakiety na turionie 2ghz)

Mimo wszystko jednak nic mocno agresywnego chyba nie używam. Stawiam bardziej na lekki, niż wydajny system.

----------

## unK

Nie wiem, po co ci -s, skoro portage domyślnie stripuje binarki, ale jak tam sobie chcesz.

----------

## Piecia

 *unK wrote:*   

> Nie wiem, po co ci -s, skoro portage domyślnie stripuje binarki, ale jak tam sobie chcesz.

 A jak używa paludisa?

----------

## matiit

Ale pisał że zrobi emerge -e world więc używa portage  :Razz: Last edited by matiit on Sun May 25, 2008 7:39 pm; edited 1 time in total

----------

## C1REX

 *unK wrote:*   

> Nie wiem, po co ci -s, skoro portage domyślnie stripuje binarki, ale jak tam sobie chcesz.

 

Czyli sam sobie wrzuca tą właśnie flagę, czy robi to jakoś inaczej i ja tymi ustawieniami coś zmieniam?

Niestety nie znam się zupełnie na programowaniu i muszę wierzyć temu, co sobie znajdę w sieci.

----------

## Arfrever

 *C1REX wrote:*   

>  *unK wrote:*   Nie wiem, po co ci -s, skoro portage domyślnie stripuje binarki, ale jak tam sobie chcesz. 
> 
> Czyli sam sobie wrzuca tą właśnie flagę, czy robi to jakoś inaczej i ja tymi ustawieniami coś zmieniam?

 

Używa `strip --strip-unneeded`, jeśli FEATURES nie zawiera "nostrip" i RESTRICT nie zawiera "strip".

----------

## mziab

C1REX: Kiedyś -DG_DISABLE_ASSERT psuło masę programów opartych na bibliotekach Gnome, np. gnome-bluetooth. Niektóre programy wymagają asercji, żeby działać poprawnie. Nie sądzę, żeby coś się w tej sprawie ostatnio zmieniło. Odradzam używanie tej flagi. Pozostałe z tego artykułu (te z -D) zresztą też niewiele dają, a są ryzykowne. Wiem, bo kiedyś się nimi bawiłem.

----------

## C1REX

Skompilowałem cały system i nie czuję różnicy. Tzn. być może coś się szybciej odpala, ale bez dokładnych pomiarów nie jestem w stanie tego stwierdzić. 

W sumie to IMHO nie warto wychodzić poza bezpieczne flagi. Można jedynie Os brać pod uwagę, jeśli chce się lżejszy system.

----------

## unK

 *C1REX wrote:*   

> Czyli sam sobie wrzuca tą właśnie flagę, czy robi to jakoś inaczej i ja tymi ustawieniami coś zmieniam?

 

np.

```
>>> Completed installing sqlite-3.5.10_pre20080522 into /var/tmp/portage/dev-db/sqlite-3.5.10_pre20080522/image/

strip: i686-pc-linux-gnu-strip --strip-unneeded -R .comment

   usr/bin/lemon-3

   usr/bin/sqlite3

   usr/lib/libsqlite3.so.0.8.6

   usr/lib/libsqlite3.a

```

Wtedy właśnie stripuje wszystkie binarki i liby należące do danego programu.

----------

## Piecia

Od pewnego czasu zastanawiam się dlaczego skrypt gcccpuopt zwraca inne wartości march. Np wcześniej miałem athlon-xp teraz athlon4, na innym komputerze wcześniej miałem prescot teraz pentium4. O co chodzi? 

Apropo -march=native, co może być przyczyną, że na jednej maszynie nie mogę tego ustawić?

W domu mam:

```
$ gcccpuopt 

Warning: Your compiler supports the -march=native option which you may prefer

$ gcc-config -l

 [1] i686-pc-linux-gnu-3.3.6

 [2] i686-pc-linux-gnu-4.1.2

 [3] i686-pc-linux-gnu-4.2.3 *

```

 natomiast w pracy:

```
$ gcccpuopt 

-march=pentium4 -mfpmath=sse

$ gcc-config -l

 [1] i686-pc-linux-gnu-4.1.2

 [2] i686-pc-linux-gnu-4.2.3 *
```

Flagi USE dla gcc tym się różnią, że w pracy mam dodatkowo fortran i gtk.

----------

## SlashBeast

athlon4 i athlon-xp to to samo, patrz man gcc.

----------

## C1REX

 *Piecia wrote:*   

> 
> 
> Apropo -march=native, co może być przyczyną, że na jednej maszynie nie mogę tego ustawić?
> 
> 

 

Miałem ten sam problem. Wszystko z -march=athlon64 się ładnie kompilowało, a z native pluło błędami. 

```
grep -r 86 /etc/env.d/
```

Zobacz, czy masz cokolwiek poza 686. Ja miałem nie wiadomo skąd ślady po 486. 

Wyczyściłem system z błędnego chosta i działa. Potrzebna będzie jednak rekompilacja przynajmniej kluczowych pakietów.

----------

## Piecia

 *C1REX wrote:*   

> 
> 
> Miałem ten sam problem. Wszystko z -march=athlon64 się ładnie kompilowało, a z native pluło błędami. 
> 
> ```
> ...

 

Coś tam mam apropo 486, ale głównie tyczy się *PATH poza jednym przypadkiem(/etc/env.d/gcc/config-i486-pc-linux-gnu:CURRENT=i486-pc-linux-gnu-4.1.2). Ale na tym kompie -march=native działa.

@SlashBeast dzięki. Następnym razem przeczytam manula zanim zadam pytanie.

----------

## C1REX

Ale co znaczy, że nie możesz ustawić? Nic się nie kompiluje z native?

----------

## Piecia

```
grep native /etc/paludis/bashrc 

ARCHITECTURA="-march=native"

paludis -I | grep march

        CXXFLAGS:              -O2 -march=prescott -momit-leaf-frame-pointer -s -pipe

```

Całość wygląda tak:

```
CFLAGS="-march=native -O2 -s -pipe -mfpmath=sse -fomit-frame-pointer"

CXXFLAGS="-march=native -O2 -s -pipe -mfpmath=sse -momit-leaf-frame-pointer"
```

paludis -i1 mc

[...]

No i przekompilował. Kurcze nie wiem dlaczego wcześniej nie chciało działać. Nie zapisałem sobie jaki to był błąd. Sprawdzę dla @world, możliwe że tylko na niektórych pakietach się wywalało. 

Na dzień dzisiejszy koniec spekulacji, zrobię rsynca, przekompiluję @world i sprawdzę co było nie tak. Może to wina paludisa? Odwołuję chwilowo alarm  :Smile: 

----------

## Lord_Raven

czy native włącza jakies flagi niewyszczegolnione tu: http://gentoo-wiki.com/Safe_Cflags

albo inaczej, jest jakas mozliwość na podejrzenie tego co włącza native?

----------

## C1REX

Niemal na bank inaczej kompiluje, bo jak miałem lekko namieszane w systemie z CHOSTem, to mi na native się nie kompilowało poprawnie wiele programów, które na tych z linku normalnie się kompilowały (czyt. cały system miałem tak postawiony).

Z drugiej strony jednak, to dzięki temu wykryłem ten błąd i się szybko pozbyłem. 

Jak zwykle zadziałało placebo i mam wrażenie, że na system przekompilowany na native działa szybciej : )

Działa, czy nie, to przyjemnie w to wierzyć : )

----------

## C1REX

Przetestowałem zużycie Ramu systemu skompilowanewgo na -O2 i tego samego na -Os. 

Po odpaleniu kilku aplikacji (KDE, FireFox, Amarok, Kadu, K3b) różnica wyniosła ok. 10-15MB.

Zauważalnie szybciej też nic się nie odpala. Moim zdaniem nie ma sensu kombinować i ryzykować.

----------

## C1REX

 *Arfrever wrote:*   

>  *C1REX wrote:*   Czy jeśli skompiluje się program pod 386 bez żadnych dodatkowych funkcji procesora, to binarka będzie mniejsza od wersji skompilowanej pod core duo ze wszystkimi funkcjami, jakie obsługuje ten procesor? 
> 
> Nie. Instrukcje procesora nie są zdefiniowane w plikach wykonywalnych.

 

```
[mtj@camus]$ gcc -o sort sort.c -O2

[mtj@camus]$ size sort

   text    data     bss     dec     hex filename

    842     252       4    1098     44a sort

[mtj@camus]$ gcc -o sort sort.c -O2 -march=pentium2

[mtj@camus]$ size sort

   text    data     bss     dec     hex filename

    870     252       4    1126     466 sort

[mtj@camus]$
```

i komentarz autora:

 *Quote:*   

> From Listing 2, we can see that the instruction size (text section) of the image increased by 28 bytes. But in this example, it's a small price to pay for the speed benefit.

 

Czy z tego wynika, że program optymalizowany pod 386 może być mniejszy, od optymalizowanego z march=native na 686?

Tym samym zajmujący mniej Ramu i teoretycznie szybciej się odpalający?

----------

## C1REX

http://lists.apple.com/archives/Unix-porting/2005/Sep/msg00053.html

A tu link o -Os i Apple.

Apple kompiluje z -Os, bo taka optymalizacja daje najlepszą wydajność w rozumieniu Apple. Część programów kompilowana jest jednak z innymi optymalizacjami.

----------

## Spaulding

```

CFLAGS="-O2 -march=prescott -pipe -funroll-loops -fomit-frame-pointer -mfpmath=sse"

CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"

LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"

```

Cały system na tym mi działa. Zero wodotryskow...

----------

## SlashBeast

Ja mam teraz każdy komputer na

```
CFLAGS="-march=native -O2 -pipe"

CFLAGS="${CFLAGS} -funroll-loops -ftracer"

CXXFLAGS="${CFLAGS}"

CHOST="x86_64-pc-linux-gnu"

LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"
```

I wszystko działa ładnie, bardzo ładnie, jedynie ffmpeg musiałem zbudować bez ftracera. Po dodaniu LDFLAGS wszystko startuje szybciej...

----------

## matiit

LDFLAGS to jest swykła zmienna, tak? Jak tak to umieścić je w make.conf, albo /etc/profile albo czymkolwiek ładowanym przez basha?

----------

## unK

W make.conf najlepiej.

----------

## matiit

Ok dzięki  :Smile: 

1008 pakietów  :Smile: 

aa tak z ciekawości, jaka jest różnica że wczyta to z make.conf a nie np. z /root/.bashrc?

----------

## C1REX

 *SlashBeast wrote:*   

> 
> 
> I wszystko działa ładnie, bardzo ładnie, jedynie ffmpeg musiałem zbudować bez ftracera. Po dodaniu LDFLAGS wszystko startuje szybciej...

 

Z tymi flagami miałeś jakieś problemy z kompilacją, czy stabilnym działaniem czegokolwiek? 

Osobiście mam KDE i na bezpiecznych flagach jest stabilne jak skała. Nigdy mi żadne okienko z błędem nie wyskoczyło. 

Kiedyś jednak używałem mniej bezpiecznych flag i ze stabilnością bywało różnie.

----------

## SlashBeast

 *matiit wrote:*   

> Ok dzięki 
> 
> 1008 pakietów 
> 
> aa tak z ciekawości, jaka jest różnica że wczyta to z make.conf a nie np. z /root/.bashrc?

 

Żadna, ale to flaga do ld, więc w make.conf będzie jej najlepiej.

 *C1REX wrote:*   

> [Z tymi flagami miałeś jakieś problemy z kompilacją, czy stabilnym działaniem czegokolwiek? 
> 
> Osobiście mam KDE i na bezpiecznych flagach jest stabilne jak skała. Nigdy mi żadne okienko z błędem nie wyskoczyło. 
> 
> Kiedyś jednak używałem mniej bezpiecznych flag i ze stabilnością bywało różnie.

 

Wszystko gra i bucy. Zero problemów.

Dodam, że używam gcc 4.3.0, kiedyś miałem O3 potem O2 z ftree-vectorize ale teraz samo O2. Zabawne jest to, że w gcc 4.3.0 ftree-vectorize jest w O3 i gdy mialem xorg-server z O3 skompilowany działał ładnie, natomiast gdy miałem z O2 ftree-vectorize xorg-server się odrazu po starcie wywalał... magia.

----------

## C1REX

 *SlashBeast wrote:*   

> 
> 
> Dodam, że używam gcc 4.3.0, kiedyś miałem O3 potem O2 z ftree-vectorize ale teraz samo O2. Zabawne jest to, że w gcc 4.3.0 ftree-vectorize jest w O3 i gdy mialem xorg-server z O3 skompilowany działał ładnie, natomiast gdy miałem z O2 ftree-vectorize xorg-server się odrazu po starcie wywalał... magia.

 

Może filtrowana była flaga O3 dla xorg? Ewentualnie ftree-vectorize działa poprawnie dla xorg tylko z innymi flagami z o3?

Gdzieś w tym temacie była o tym dyskusja, że flagi z O3 dodane ręcznie do O2 w make.conf działają inaczej, niż samo O3.

Nie jestem pewny, ale może filtry odrzucają niektóre flagi z zestawów O2 i O3 i ich ręczne dodanie wymusza ich użycie? 

BTW: Co ta flaga ftree-vectorize robi, wyjaśniając to na chłopski (ktoś kto nie ma bladego pojęcia o programowaniu) rozum?

----------

## unK

 *SlashBeast wrote:*   

> Dodam, że używam gcc 4.3.0, kiedyś miałem O3 potem O2 z ftree-vectorize ale teraz samo O2. Zabawne jest to, że w gcc 4.3.0 ftree-vectorize jest w O3 i gdy mialem xorg-server z O3 skompilowany działał ładnie, natomiast gdy miałem z O2 ftree-vectorize xorg-server się odrazu po starcie wywalał... magia.

 

Ja teraz rekompiluję world z flagami

```
-O2 -march=native -pipe -fomit-frame-pointer -ftree-vectorize -fno-ident
```

z powodu tego, że gcc-4.3.1 dostał się do ~arch. Zobaczymy, co będzie z tym ftree-vectorize ;p

 *Quote:*   

> Co ta flaga ftree-vectorize robi, wyjaśniając to na chłopski (ktoś kto nie ma bladego pojęcia o programowaniu) rozum?

 

 *jeden z postów z http://www.gamedev.net/community/forums/topic.asp?topic_id=311231 wrote:*   

> Loop vectorization would be an attempt to make use of SIMD (Single Instruction, Multiple Data) to optimize loops. In particular, if the calculation done in a given loop iteration is independant of the result from previous iterations, it may unroll the loop to a depth of, say, 4, and do the four unrolled copies in parallel via a set of SIMD instructions to a vector processor.

 

----------

