Cflags sûr

De Gentoo Linux Wiki.

Sommaire

[modifier] Introduction

Cet article liste les CFLAGS considérés comme "sûr" pour un processeur donné. Ce sont les paramétres que vous devriez utiliser si vous n'êtes pas certains des CFLAGS que votre processeur a besoin.

Attention : CETTE PAGE EST POUR LES FLAGS SÛR SEULEMENT.

S'il vous plaît n'ajoutez pas de flags qui ne sont pas sûr à 100%.

Attention : Changer le CHOST n'est pas une tâche simple. Vous devez suivre le guide officiel pour changer son CHOST. Notez également que certain changement ne sont pas possible en pratique. Par exemple on ne peut pas passer de x86 (32-bit) à x86-64 (64-bits, amd64) sans faire une réinstallation totale.

[modifier] GCC Version and CPU

Ces CFLAGS sont pour gcc 3.x et 4.x. Pour vérifier votre version :

gcc --version

Vous pouvez identifier le processeur que vous avez ainsi :

cat /proc/cpuinfo

Si vous avez un processeur Intel, vous pouvez utiliser x86info pour avoir plus d'informations :

emerge -av x86info

[modifier] Information générale sur les CFLAGS

Cette page est pour ceux qui ne veulent pas expérimenter et veulent un système stable mais tout de même optimisé pour leur processeur. En utilisant ces flags les binaires de votre système peuvent ne pas fonctionner sur un autre système. Par exemple si vous avez compilé avec l'optimisation pour un Pentium 4 (-march=pentium4), vous ne pouvez pas partager vos binaires avec quelqu'un ayant un Pentium MMX (-march=pentium-mmx).

Si vous utilisez -mtune au lieu de -march, alors vos binaires sont compatibles avec un i386 et toutes architectures récentes. Vous pouvez combiner -march=i686 avec -mtune=pentium4 pour avoir des binaires i686 optimisés pour un pentium4 (mais pouvant toujours fonctionner sur tout i686).

Notez que -O2 est plus sûr que "-O3", et "-O3" peut parfois être contre-productif. Sur des ordinateurs avec un cache ou/et mémoire limité, "-Os" peut parfois offrir de meilleures performances avec des binaires plus petit.

GCC a de nombreuses options pour les CPU tel que MMX et SSE; -mmx -msse etc. Elles sont automatiquement appliquées si vous choisissez la bonne option -march. L'option -mfpmath=sse n'est pas activée avec -march car elle produit des binaires souvent plus lent à cause de limitation dans les entêtes de la glibc. Il est donc recommandé de pas utilisé cette option même avec un processeur prenant en charge le SSE. L'option -mpfmath=sse,387 est expérimentale et instable.

L'option -fomit-frame-pointer est activée avec -O1, -O2, -O3 et -Os sur les architectures où il ne gêne pas pour le debug, comme AMD64, mais pas x86. Donc ajoutez le à vos CFLAGS, si vous êtes sur x86.

Notez que -O3 et, spécialement, l'option -fomit-frame-pointer peut gêner le debug. Voyez http://bugs.gentoo.org/show_bug.cgi?id=68282 pour une discussion en anglais.

[modifier] GCC 4.3+ et march=native

GCC 4.3 introduit une nouvelle option à -march, -march=native, qui détecte automatiquement ce que votre processeur supporte et utilise les options qu'il faut. Si vous avez un processeur Intel ou AMD et que vous utilisez >=sys-devel/gcc-4.2.0, l'utilisation de -march=native est recommandée. N'utilisez pas -march=native si vous utilisez distcc sur des noeuds avec des architectures différentes car le code produit peut être inutilisable.

[modifier] 32-bit

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] 64-bit

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"


[modifier] CFLAGS spécifiques aux processeurs

Sur les pages suivantes vous pouvez trouver les CFLAGS spécifique à votre processeur.

[modifier] A voir également

Autres langues