Dies ist eine alte Version des Dokuments!
The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking.
CFLAGS="-O2 -march=native -pipe"
CFLAGS="-floop-interchange -floop-strip-mine -floop-block"
CFLAGS="-flto"
CFLAGS="-O2 -march=native -pipe -ftree-vectorize -floop-interchange -floop-strip-mine -floop-block -ftree-loop-linear"
USE="graphite"
CFLAGS="-O2 -march=native -pipe -floop-interchange -floop-strip-mine -floop-block"
alles mit
CXXFLAGS="${CFLAGS}"
LDFLAGS="${LDFLAGS} -Wl,-z,now -Wl,--hash-style=gnu -Wl,--enable-new-dtags"
LDFLAGS="${LDFLAGS} -flto -fwhole-program"
Allerdings ist lto mit GCC-4.5 experimentell und zumindest im 3Q-2010 nicht zu gebrauchen, „-fwhole-program“ macht zusätzlich Probleme. Bei der Nutzung von lto muss unbestätigten Quellen nach mit sehr großen Binaries gerechnet werden, die oft sämtliche Vorteile kompensieren. Eventuell ist lto daher nur selektiv für einzelne Programme sinnvoll.
Was ist graphite?
Zunächst
USE="graphite"
setzen und gcc neu kompilieren.
Anschließend müssen
dev-libs/ppl dev-libs/cloog-ppl sys-devel/gcc
mit entsprechenden Flags
CFLAGS="-floop-interchange -floop-strip-mine -floop-block"
neu kompiliert werden. Nun sollte der komplette Toolchain sowie wichtige Systembibliotheken neu erstellt werden:
# emerge -eav1 @system
Abschließend kann auch @world komplett neu gebaut werden, dies kann aber auch sukzessive mit den normales Updates geschehen.
Zunächst neuen GCC installieren und mit
# gcc-config
aktivieren. Anschließend @sytem und @world neu kompilieren:
# emerge -eav system # emerge -eav world
Eventuell
# emerge --resume
oder
# emerge --resume --skip-first
verwenden.
# fix_libtool_files.sh 4.5.2
# gcc-config
und
# source /etc/profile
ausgeführt werden.
# emerge -aC <sys-devel/gcc-IHRE-NEUE-GCC-VERSION
Auf meinem ~amd64-System (Stand: 14.03.2011)…
… nicht kompilierbare Pakete:
… fehlerhafte Pakete: