Open Source im professionellen Einsatz

ICC in Gentoo einrichten

Als alternativer Closed-Source-Compiler soll hier Intels Compiler-Collection dienen, für die mehrere Ebuilds vorliegen. Ein »emerge -v icc« installiert die Version 10.0.026, die für den nicht-kommerziellen Gebrauch kostenfrei ist [4]. Die Lizenzen von Intels "C++ Composer XE for Linux" decken auch die älteren in Portage aufgeführten ICC-Versionen ab. Die per E-Mail von Intel erhaltene Lizenzdatei mit Endung ».lic« speichert der Anwender unter dem manuell anzulegendem Verzeichnis »/opt/intel/licenses/« .

Nun muss er in die Datei »/opt/intel/cce/10.0.026/bin/icc.cfg« die Zeile »-idirafter /usr/include/linux« aufnehmen. Andernfalls tritt beim Kompilieren von Programmen, die die Datei »limits.h« inkludieren, ein »catastrophical error« auf. Auch ist es erforderlich, die Gentoo-Datei »/etc/make.conf« mit Umgebungsvariablen für die ICC erweitern: »ICCCFLAGS="-O2 -xT -ip"« . Das »-xT« veranlasst die ICC Code zu erzeugen, der die SSSE3-Einheit des Core 2 Duo heranzieht. Zum Abschluss führt der Admin »env-update« sowie »source /etc/profile« aus, um die Umgebungsvariablen an die neuen Gegebenheiten anzupassen.

Lost in Compilation

Dem ersten Impuls, Gentoo nun komplett per »emerge world« mit ICC zu übersetzen, sollte man nicht nachkommen. Denn die Quellen der Bash, von Sed, Binutils, GCC, Glibc, Ncurses, Libstdc++-v3, Zlib oder Procps enthalten GCC-spezifischen Code. Als Lösung bietet sich an, den Paketmanager über eine manuell anzulegende und mit ausführbaren Rechten versehene Datei »/etc/portage/bashrc« zu beeinflussen. Der Installationsprozess führt in der genannten Datei vorhandenen Code in jeder Ebuilds-Stufe aus. Auf [5] gibt es entsprechende Code-Beispiele.

Für diesen Artikel reicht es aber, nur die Software mit dem ICC zu übersetzen, die der Benchmark vermessen soll. Der Administrator hinterlegt dazu die mit der ICC zu kompilierenden Programme ohne Versionsnummern, jedoch einschließlich ihrer Portage-Kategorie in der Datei »/etc/portage/bashrc/package.icc« :

dev-db/postgresql-base
dev-db/postgresql-server

Bei allen anderen Programmen nutzt der Installationsprozess GCC weiter. Um die PostgreSQL-GCC-Binarys aus dem System zu kicken, deinstalliert der Admin jetzt »postgresql-base« sowie »postgresql-server« und installiert sie gleich wieder. Nun übersetzt die ICC die Datenbank.

Um noch einen weiteren Benchmark-Vergleichswert zu erheben, installierten die Tester in der Folge noch die in Portage eingetragene, als instabil gekennzeichnete ICC-Version 11.1.072-r1 (Abbildung 2). Der Befehl »autounmask >= dev-lang/icc-11.1.072-r1« kennzeichnet die instabile Version intern als installierbar und ermöglicht so das Ausprobieren. Die Sourcen haben übrigens eine beachtliche Größe: 770 MByte. (Inoffizielle 12er-Versionen der ICC für Gentoo gibt es übrigens auch bereits [6].)

Abbildung 2: Der Griff zu autounmask ermöglicht instabile Programmpakete zu installieren.

Egal, ob man Programmpakete mit der stabilen oder der instabilen ICC kompiliert, linkt der Compiler den Code dynamisch gegen ICC-Bibliotheken. Das will dann beachtet sein, wenn der Administrator die ICC wieder deinstalliert: Denn nun finden die Binarys ihre Bibliotheken nicht mehr – das Neuübersetzen mit der GCC steht somit an.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook