gcc als Compiler ist eigentlich jedem ein Begriff, der schon mal Icinga selbst kompiliert hat. Respektive g++, sofern man sich mutig an Icinga 2 Builds heranwagt. Auf gängigen Systemen, wie etwa Debian, reicht ein

# apt-get install gcc
# apt-get install g++

um damit arbeiten zu können. Um das ganze zu beschleunigen, hat mein Kollege Gunnar schon auf ccache hingewiesen 😉
Man soll ja hin und wieder über den Tellerrand schauen, und als dann FreeBSD angekündigt hat, clang als default Compiler zu verwenden, bin ich hellhörig geworden. Aber wie es halt so ist, das übliche Zeitproblem schlägt immer wieder zu – bis der erste Icinga Bug mit clang Compiler Warnings aufgemacht wurde.
Die Installation von clang ist ähnlich trivial wie gcc. In Debian Testing (jessie) sollte man lediglich beachten, dass die Pakete nach Versionen getrennt sind. clang-3.2 oder ganz frisch clang-3.4.

# apt-get install clang

Um das ganze parallel zu gcc verwenden zu können, übergibt man die Variablen direkt an make.

$ make -j4 CC=clang
$ make -j4 CXX=clang++

“Am Objekt” sieht das ganze in Icinga 2 mit dem gerade in Entwicklung befindlichen IDO Backend dann so aus:
Ich habe absichtlich einen Fehler beim Host DB Object eingebaut, der einen falschen Typ an die Funktion übergibt, die sich ein Service Object erwartet, aber einen Host bekommt. Icinga 2 kennt lediglich Servicechecks und benötigt deswegen Serviceattribute auch beim Host.
clang_gcc_test_diff
Während gcc (mit ccache) den Fehler zwar ordentlich anmeckert, sieht mans eigentlich nicht sofort.
clang_gcc_test_make_gcc
clang hingegen illustriert das mit Farben und weist einen ebenso direkt auf den falschen String hin.
clang_gcc_test_make_clang
Fazit: Auch wenn wir weiterhin gcc/g++ als grundsolide Basis beim Entwickeln verwenden, clang ist mit Sicherheit eine interessante Alternative, die sich jedermann mal ansehen sollte.

Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...