Open Source im professionellen Einsatz
Linux-Magazin 07/2005

Software entwickeln unter Linux

Mal was anderes?

Linux ohne GCC - das ist kaum vorstellbar. Dennoch gibt es andere freie Compiler, die es langsam mit ihm aufnehmen können: Konkurrent LLVM setzt zur Optimierung auf Bytecode-Techniken.

393

Inhalt

 

100

GCC 4.0
Eine neue Version des GNU-Compilers liegt vor. Benchmarks zeigen,
ob der neue mit dem alten mithalten kann oder ihn gar
übertrifft.

104

Perl-Snapshot
Der Editor Vim bietet Programmierern einigen Komfort. Wir stellen
die praktischsten Features für Perl-Programmierer vor.

110

Federlesen
Moderne Desktops setzen auf ausgefeilte grafische Oberflächen
und bunte Icons. Tcl-Programmierer verwenden dafür das
GUI-Toolkit Tk.

Ohne ihn gäbe es heute kein Linux. Die Rede ist nicht von Linus Torvalds, sondern vom GNU-Compiler, der soeben in Version 4.0 erschien. Nicht umsonst betonte Richard Stallman die Bedeutung der GNU-Toolchain und forderte, dass ihre Rolle auch im Namen des freien Betriebssystems erscheinen sollte [1]. Doch egal wie man zu "GNU/Linux" steht, der gute alte Compiler dient fast allen freien Softwareprojekten als tüchtiges und verlässliches Arbeitspferd.

Nun kommt jedes Lasttier aber irgendwann in die Jahre und auch dem GNU-Compiler ist sein Alter anzumerken. Moderne Sprachen, zu denen in diesem Zusammenhang auch C++ zählt, stellen andere Anforderungen als das recht einfach strukturierte C. Die GCC-Version 4.0 versucht durch grundlegende Änderungen am inneren Aufbau, diesen gerecht zu werden (siehe dazu den Artikel der folgenden Seiten).

Besser optimieren mit Bytecode

Vor kurzem erschien die Compiler-Infrastruktur LLVM in Version 1.5 [2]. Dabei handelt es sich nicht nur um einen Compiler, der mit dem ausführbaren Binary seine Arbeit abschließt, sondern um eine Infrastruktur zur ständigen (lifelong) Code-Verbesserung. Optimierungen sollen nicht nur beim Compilen und Linken stattfinden, sondern auch noch beim Ausführen selbst - die Mitarbeit der Betriebssysteminfrastruktur wie des Linkers vorausgesetzt.

Der LLVM-Compiler übersetzt den Quellcode in eine maschinenunabhängige Zwischensprache, die den von Java bekannten Bytecodes ähnelt. Sie bewahrt Informationen der Originalsprache und bietet so mehr Möglichkeiten zur Optimierung. Wie die neue GCC speichert LLVM die Programmstruktur in einem Baum einzelner Zuweisungen (Static Single Assignments).

Beim Output zeigt sich LLVM flexibel: vom spezifischen Maschinencode bis zum Bytecode, den ein Just-in-Time-Compiler zum Laufen bringen kann. Mittlerweile übersetzt LLVM schon einige große Programme, darunter Teile des bekannten Spec-Benchmark [3], scheitert aber unter anderem noch am Linux-Kernel. Das soll er aber demnächst nachholen, wenn es nach den LLVM-Autoren geht. Dass auch LLVM wieder Teile der GCC-Frontends und -Backends verwendet, zeigt, wie viel Vorarbeit dessen Väter und Mütter geleistet haben.

Programmierer-Software

Infos

[1] GNU/Linux-FAQ: [http://www.gnu.org/gnu/gnu-linux-faq.html]

[2] LLVM [http://llvm.cs.uiuc.edu]

[3] Spec-Benches: [http://www.spec.org]

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • LLVM-Compiler 2.8 mit ISO-Standards

    In Version 2.8 implementiert das LLVM-Compiler-Framework die ISO-1998- und -2003-Standards für C++.

  • LLVM- und Swift-Erfinder wechselt von Apple zu Tesla

    Chris Lattner hat nicht nur Apples Programmiersprache Swift erfunden, sondern arbeitete auch maßgeblich an der LLVM-Toolchain mit. Nun wechselt der Entwickler von Apple zu Tesla.

  • LLVM 3.5 ist verfügbar

    Die Entwickler der LLVM-Compiler-Infrastruktur (Low Level Virtual Machine) haben Version 3.5 in die freie Wildbahn entlassen, die Änderungen für verschiedene Plattformen an Bord hat, darunter ARM und MIPS.

  • LLVM 3.8 rangiert viele Funktionen aus

    Die LLVM Compiler Infrastructure ist in Version 3.8 erschienen. Sie verabschiedet sich von alten Windows-Versionen, tauscht Autoconf gegen Cmake ein und rangiert verschiedene C-API-Funktionen aus. Für die Plattformen gibt es ebenfalls zahlreiche Änderungen.

  • GCC

    Was heute als GNU Compiler Collection in fast jeder Linux-Distribution steckt, ist das Ergebnis eines Forks. Das Alternativprojekt Egcs öffnete um die Jahrtausendwende die Entwicklung und siegte.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.