Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:gentoo-spezifisch:gcc

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:gentoo-spezifisch:gcc [15.03.2011 12:08]
marc angelegt
linux:gentoo-spezifisch:gcc [09.07.2013 21:33] (aktuell)
Zeile 3: Zeile 3:
 The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking.
  
-===== 1. Einstellungen (make.conf) =====+===== 1. GCC Upgrade =====
  
-==== 1.1 CFLAGS ====+==== 1.1 Upgrade ====
  
-  * **safe**:+Zunächst neuen GCC installieren und mit
  
-  CFLAGS="-O2 -march=native -pipe" +  # gcc-config 
-\\ +
-  * Für **graphite** muss USE='graphite' gesetzt sein:+
  
-  CFLAGS="-floop-interchange -floop-strip-mine -floop-block" +aktivieren. Anschließend @sytem und @world neu kompilieren:
-\\ +
-  * Für **lto** muss USE='lto' gesetzt sein (siehe auch LDFLAGS weiter unten):+
  
-  CFLAGS="-flto" +  # emerge -eav system 
-\\ +  # emerge -eav world
-  * auf ~amd64 mit GCC-4.5 Anfang 2011 **stabil**, mit GCC-4.6 **instabil**:+
  
-  CFLAGS="-O2 -march=native -pipe  +Eventuell 
-  -ftree-vectorize +
-  -floop-interchange -floop-strip-mine -floop-block +
-  -ftree-loop-linear" +
-\\ +
-  * **Empfehlung** für ~amd64 und GCC-4.6:+
  
-  USE="graphite"+  # emerge --resume
  
-  CFLAGS="-O2 -march=native -pipe -floop-interchange -floop-strip-mine -floop-block" +oder
-\\ +
-alles mit+
  
-  CXXFLAGS="${CFLAGS}"+  # emerge --resume --skip-first
  
-==== 1.2 LDFLAGS ====+verwenden.
  
-  * **safe**:+==== 1.2 Nacharbeit ====
  
-  LDFLAGS="${LDFLAGS} -Wl,-z,now -Wl,--hash-style=gnu -Wl,--enable-new-dtags" +  * Wenn Fehler wie **libtool: link: `/usr/lib/gcc-lib/i686-pc-linux-gnu/4.5.2/libstdc++.la' is not a valid libtool archiv** auftretenkann dies mit fix_libtool_files.sh und der Angabe der alten GCC-Version behoben werden: 
-\\ + 
-  * Für **lto**:+  # fix_libtool_files.sh 4.5.2 
 + 
 +  * Falls **error: /usr/bin/gcc-config: line 632: /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory** gemeldet wirdkann versucht werden ///etc/env.d/gcc/config-i686-pc-linux-gnu// zu löschen. Anschließend muss 
 + 
 +  # gcc-config 
 + 
 +  und 
 + 
 +  # source /etc/profile 
 + 
 +ausgeführt werden. 
 + 
 +==== 1.3 Aufräumen ==== 
 + 
 +  # emerge -aC <sys-devel/gcc-IHRE-NEUE-GCC-VERSION
  
-  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. 
  
 ===== 2. Graphite ===== ===== 2. Graphite =====
Zeile 52: Zeile 51:
 ==== 2.1 Einleitung ==== ==== 2.1 Einleitung ====
  
-Was ist graphite?+FIXME Was ist graphite?
  
 ==== 2.2 Installation ==== ==== 2.2 Installation ====
Zeile 72: Zeile 71:
   CFLAGS="-floop-interchange -floop-strip-mine -floop-block"   CFLAGS="-floop-interchange -floop-strip-mine -floop-block"
  
-neu kompiliert werden. Nun sollte der komplette Toolchain sowie wichtige Systembibliotheken neu erstellt werden:+neu kompiliert werden. Nun sollte der komplette Toolchain sowie wichtige Systembibliotheken mit den neuen CFLAGS kompiliert werden:
  
   # emerge -eav1 @system   # emerge -eav1 @system
  
-Abschließend kann auch @world komplett neu gebaut werden, dies kann aber auch sukzessive mit den normales Updates geschehen.+Abschließend kann auch @world komplett neu gebaut werden, es kann aber auch sukzessive mit den normales Updates geschehen.
  
  
-===== 3. GCC Upgrade =====+===== 3. LTO =====
  
-==== 3.1 Upgrade ====+==== 3.1 Einleitung ====
  
-Zunächst neuen GCC installieren und mit+FIXME Was ist LTO?
  
-  # gcc-config +  * Seit GCC-4.6 ohne zusätzlichen USE-Flag 
 +  * Mit GCC-4.6 angeblich für "a wide range of programs" nutzbar 
 +  * GCC-4.5 extrem experimentell
  
-aktivierenAnschließend @sytem und @world neu kompilieren:+==== 3.2 Installation ====
  
-  # emerge -eav system +  CFLAGS="-flto"
-  # emerge -eav world+
  
-Eventuell  +und
- +
-  # emerge --resume +
- +
-oder +
- +
-  # emerge --resume --skip-first +
- +
-verwenden. +
- +
-==== 3.2 Nacharbeit ==== +
- +
-  * Wenn Fehler wie **libtool: link: `/usr/lib/gcc-lib/i686-pc-linux-gnu/4.5.2/libstdc++.la' is not a valid libtool archiv** auftreten, kann dies mit fix_libtool_files.sh und der Angabe der alten GCC-Version behoben werden: +
- +
-  # fix_libtool_files.sh 4.5.2 +
- +
-  * Falls **error: /usr/bin/gcc-config: line 632: /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory** gemeldet wird, kann versucht werden ///etc/env.d/gcc/config-i686-pc-linux-gnu// zu löschen. Anschließend muss +
- +
-  # gcc-config +
- +
-  und +
- +
-  # source /etc/profile +
- +
-ausgeführt werden. +
- +
-==== 3.3 Aufräumen ==== +
- +
-  # emerge -aC <sys-devel/gcc-IHRE-NEUE-GCC-VERSION+
  
 +  LDFLAGS="-Wl,-flto"
  
 ===== 4. Aktuelles ===== ===== 4. Aktuelles =====
  
-====  4.1 GCC 4.6 ==== 
- 
-=== 4.1.1 Allgemeines === 
- 
-  * graphite ist insofern "buggy", als dass sich bei eingeschalteter graphite-Unterstützung des toolchains keine (oder kaum) Pakte mehr mit der alten Version 4.5 kompilieren lassen. Solange diese als "Backup-Lösung" genutzt werden soll, dürfen //während// ihrer Nutzung die entsprechenden CFLAGS nicht aktiviert sein. 
-  * Snapshot vom 12.03. kompiliert nicht, u.U. wegen graphite-CFLAGS, vielleicht auch nur wegen dem USE-Flag. 
- 
-=== 4.1.2 Spezielle Pakete === 
- 
-Auf meinem ~amd64-System (Stand: 14.03.2011)... 
- 
-... **nicht kompilierbare** Pakete: 
- 
-  * verifiziert 
-    * sys-devel/dev86-0.16.18 
-      * Nutze erstmal GCC-4.5  
-    * www-client/chromium-11.0.696.3 
-      * Nutze erstmal GCC-4.5 
-    * app-emulation/virtualbox-4.0.4 
-      * ./configure lässt nur bi 4.X, X <= 5 zu 
-    * app-office/libreoffice-3.3.1 
-      * Nutze erstmal GCC-4.5 
-    *  
- 
-  * unverifiziert 
-    * <del>media-libs/gst-plugins-good-0.10.23</del> 
-      * Workaround: Downgrade zu media-libs/gst-plugins-good-0.10.22 
-    * <del>media-libs/gst-plugins-bad-0.10.19</del> 
-      * media-libs/gst-plugins-bad-0.10.21 kompiliert erfolgreich 
-    *  
- 
- 
-\\ 
-... **fehlerhafte** Pakete: 
- 
-  * verifiziert 
-    * <del>app-portage/eix-0.22.8:</del> 
-      * <del>Speicherzugriffsfehler</del> 
-      * Workaround: USE="-strong-optimization" 
-    *  
- 
-  * unverifiziert 
-    * <del>Speicherzugriffsfehler bei *.wmv-Dateien</del> 
-      * <del>media-libs/gst-plugins-base-0.10.32</del> 
-      * <del>media-video/ffmpeg-0.6_p25767</del> 
-      * <del>media-plugins/gst-plugins-ffmpeg-0.10.11-r1</del> 
-        * Vermutlich durch Downgrade auf media-libs/gst-plugins-good-0.10.22 behoben 
-    * www-client/chromium 
-      * tab_strip_gtk.cc(1180)] Not implemented reached in virtual void TabStripGtk::StopAllHighlighting() Speicherzugriffsfehler 
-    *  
  
-\\ 
linux/gentoo-spezifisch/gcc.1300187323.txt.gz · Zuletzt geändert: 09.07.2013 21:32 (Externe Bearbeitung)