# Lohnt sich die Neucompilierung des Systems wegen "march"

## Erdie

Neulich habe ich festgestellt, dass die empfohlene --march Variable bei Core2Duo Rechnern nicht mehr "nocona" sonders "core2" lauten sollte. Dieses habe ich jetzt geändert. Ist es empfehlenswert, deswegen das ganze System neu zu  bauen? Ich vermute mal, der Aufwand steht in keinem Verhältnis zum Nutzen. Sehe ich das richtig?

-Erdie

----------

## schachti

Ich denke, es lohnt sich eher nicht - zumal bei jedem Update ja automatisch die neuen Flags genutzt und das System dadurch automatisch nach und nach neu kompiliert wird.

----------

## mv

Wenn Du die march schon änderst, dann setze sie doch gleich auf "native". Wenn Du nicht distcc o.ä. benutzt, ist das die sicherste Variante (auch was sse usw. angeht).

----------

## Erdie

"core2" stand irgendwo hier im Forum als Empfehlung. Was ist an "native" denn anders? Wenn das besser ist, nehm ich das selbstverständlich.

-Erdie

----------

## mv

 *Erdie wrote:*   

> Was ist an "native" denn anders?

 

"native" nimmt halt automatisch Deine CPU, egal wie die gcc-Version sie gerade nennt. Außerdem hast Du damit - wie erwähnt - bei Flags wie -msse* und Ähnlichem automatisch die für Deine CPU passenden Defaults.

----------

## Erdie

Klingt gut, werde ich so machen.

----------

## SvenFischer

core2duo sven # cat /etc/make.conf

```

CFLAGS="-march=core2 -O2 -pipe -fomit-frame-pointer -msse3 -mssse3 -msse4.1"

CXXFLAGS="${CFLAGS}"

CHOST="x86_64-pc-linux-gnu"

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

```

----------

## jodel

 *mv wrote:*   

> 
> 
> "native" nimmt halt automatisch Deine CPU, egal wie die gcc-Version sie gerade nennt. Außerdem hast Du damit - wie erwähnt - bei Flags wie -msse* und Ähnlichem automatisch die für Deine CPU passenden Defaults.

 

irgendwo, auch hier im Forum, hab ich mal gelesen, dass das spezifische -march besser ist als native, aber kann mich auch irren.

Die optimalen CFLAGS findet man auch hier:  http://en.gentoo-wiki.com/wiki/Safe_Cflags

----------

## Finswimmer

native darfst du halt nicht nehmen, wenn du distcc nutzt oder für andere Computer baust.

Ansonsten sollte es aber nicht schlechter sein, da GCC sich die richtigen Optionen selbst zusammensucht.

----------

## Erdie

Also ich verstehe das jetzt so: "Native" hat den Vorteil, dass ich micht nicht darum kümmern muß wenn neuere gcc Versionen andere flags beinhalten, also so wie es bei mir jetzt war. Der alte gcc kannte nur "nocona" und der neuere hat "core2" dazubekommen. Der Wechsel wird sozusagen automatisch gemacht, indem immer für die lokale Plattform das richtige ermittelt wird.

----------

## firefly

 *Erdie wrote:*   

> Also ich verstehe das jetzt so: "Native" hat den Vorteil, dass ich micht nicht darum kümmern muß wenn neuere gcc Versionen andere flags beinhalten, also so wie es bei mir jetzt war. Der alte gcc kannte nur "nocona" und der neuere hat "core2" dazubekommen. Der Wechsel wird sozusagen automatisch gemacht, indem immer für die lokale Plattform das richtige ermittelt wird.

 

Wobei man beachten muss, dass -march=native erst ab gcc 4.2 bekannt ist. Ältere versionen kennen diese option nicht

----------

## Christian99

du kannst auch überprüfen, welche flags jetzt von deinen march optionen aktiviert werden:

```
gcc -S -fverbose-asm test.cpp
```

 erzeugt eine assembler datei, in der als Kommentar die aktivierten Flags drin stehen. (test.cpp kann einfach nur leer sein). wenn du jetzt noch verschiedene march-optionen anhängst, kannst du das vergleichen.

----------

