# [Gentoo]Optimale Compilerflags



## RedWing (26. Januar 2005)

Hallo,

bin grad dabei mir eine Gentoo 2004.3 Distribution mit Kernel 2.6.10 anzueignen.

Nun meine Frage:

In der /etc/make.conf für das portage System von Gentoo kann ich ja die Compilerflags angeben.
Ich habe meine Installation aber mittlerweile schon fast komplett fertig und habe aus 
Unwissenheit alles mit dem Flag "-march=i386" kompiliert, obwohl ich einen Pentium 4 
habe.
Macht es Performancemäßig einen großen Unterschied ob ich nun alles mit -march=i386,
oder mit -march=i686 kompiliere?
Wenn ja, wie kann ich mein komplettes System rekompilieren und was würde es da zu beachten geben?

Danke und Gruß

RedWing


----------



## it-ruffy (27. Januar 2005)

Hallo,

 es macht viel Sinn, dein System auf deine Architektur hin zu optimieren, hierdurch werden die speziellen Funktionen des Prozessors optimal genutzt und das System wird schneller laufen.

 Du kannst auf diversen Seiten, auch auf den offiziellen Gentooseiten die optimalen Flags für dein System erfahren, hierzu benötigst du Angaben über deinen Prozessor, die möglichst genau sein sollten.

 Um dein System nachträgöich auf deine Konfiguration hin zu optimieren, musst du entsprechend die Flags in die make.conf setzen und in der Shell folgendes Kommando ausführen:


```
emerge -e system && emerge -e world
```


----------



## RedWing (27. Januar 2005)

Hallo,



> es macht viel Sinn, dein System auf deine Architektur hin zu optimieren, hierdurch werden die speziellen Funktionen des Prozessors optimal genutzt und das System wird schneller laufen.



Mhm da scheinen sich die Meinungen wohl auseinander zu gehen:



> Perormancegewinn von i368 zu pentium4 könnte so bei 50Promille liegen oder mehr oder weniger Smile
> Am meisten noch bei Multimediazeugs wegen mmx und sse.



Siehe dazu auch:

http://forums.gentoo.org/viewtopic.php?t=285846&sid=5a1a7ca25664912e26b59f721fa3f833

Aber trotzdem vielen Dank für deinen Tip, ich werde wenn ich Zeit finden sollte  
mein System mal neu übersetzen mit den entsprechenden Kompilerflags...

Danke und Gruß

RedWing


----------



## ocb (1. Februar 2005)

it-ruffy hat gesagt.:
			
		

> ```
> emerge -e system && emerge -e world
> ```


 
*emerge -e world *reicht, denn *system* ist in *world* enthalten.

 Außerdem würde ich empfehlen nicht alle CFlags zu setzen, die laut manpage spektakuläre Optimierungen erzeugen. Das macht i.d.R. mehr Ärger, als mehr Performance... 


```
-O2 -march=<deine> -pipe -fomit-frame-pointer -ftracer
```
 
 ...ist vollkommen ausreichend und i.d.R. stabil.

 Eventuell -fweb, wenn Du >=gcc-3.4 verwendest.


----------



## JohannesR (1. Februar 2005)

-O3 kann unter umstaenden auch noch ganz sinnvoll sein, allerdings kompilieren damit einige Pakete unter Umstaenden nicht ganz durch.


----------



## RedWing (1. Februar 2005)

ocb hat gesagt.:
			
		

> *emerge -e world *reicht, denn *system* ist in *world* enthalten.



Nein bei mir hat das nicht gereicht.
Siehe dazu:

http://www.gentooforum.de/thread.php?threadid=4567

Und falls es noch jemand interessieren sollte:

Meine make.conf für einen Pentium IV, NVIDIA Graka schauts mittlerweile so 
aus, und es klappt eigentlich alles ganz gut:


```
CFLAGS="-O3 -march=pentium4 -pipe -fomit-frame-pointer -falign-functions=64  -falign-jumps=8 -falign-loops=8"
LINGUAS="de"

VIDEO_CARDS="nvidia"
CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j2"

GENTOO_MIRRORS="ftp://ftp.uni-erlangen.de/pub/mirrors/gentoo"

USE="-gnome gtk qt kde dvd alsa cdr ithreads"
CONFIG_PROTECT="-*"
ALSA_CARDS="intel8x0"

FEATURES="ccache"

CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="2G"
```



> -O3 kann unter umstaenden auch noch ganz sinnvoll sein, allerdings kompilieren damit einige Pakete unter Umstaenden nicht ganz durch.



Auch da lief (bei mir zumindest) alles perfekt. Es kommt da wohl auch auf 
die gcc Version an.

Anmerkung: 
Wer im Besitz eines Prozessors mit Hyperthreading Unter-
stützung ist und diese Option im Kernel auch aktiviert hat kann auch
MAKEOPTS="-j3" anstatt MAKEOPTS="-j2" dahernehmen

Gruß

RedWing


----------

