g++ => clang

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

g++ => clang

Beitrag von Xin » Sa Jul 28, 2012 2:45 pm

Moin,

ich habe mir gestern mal clang installiert, nachdem fat-lobyte derart davon schwärmt.

Gibt es irgendwo eine Übersicht, was man beim Umstieg von g++ auf clang beachten muss? Möglichst eine Art Tabelle, wie sich die Parameter von gcc nach clang verändern?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: g++ => clang

Beitrag von fat-lobyte » Sa Jul 28, 2012 10:30 pm

Xin hat geschrieben:ich habe mir gestern mal clang installiert, nachdem fat-lobyte derart davon schwärmt.
Gute Sache!
Xin hat geschrieben:Gibt es irgendwo eine Übersicht, was man beim Umstieg von g++ auf clang beachten muss? Möglichst eine Art Tabelle, wie sich die Parameter von gcc nach clang verändern?
1. Es gibt eine Tabelle mit den meisten Kommandozeilenoptionen hier: http://clang.llvm.org/docs/UsersManual.html
2. Eigentlich sind die Clang kommandozeilenparameter so gewählt, dass sie mit den äquivalenten des GCC übereinstimmen. Das bedeutet, im Normalfall kann man einfach die GCC Flags übernehmen.
3. Ich glaube eine solche Tabelle gibt es nicht, aber im Allgemeinen kann man sich hier über die Kompatibilität mit GCC-Features informieren: http://clang.llvm.org/compatibility.html

Ein persönlicher Tip: einfach mal kompilieren. Erst bei Fehlern nach Fehlern zu suchen anfangen :-)
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: g++ => clang

Beitrag von Xin » So Jul 29, 2012 11:15 am

Mein Buffer reicht nicht, um alle Fehler aufzuzählen.

Die Idee mit 'einfach mal kompilieren' hatte ich nämlich schon. ;-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: g++ => clang

Beitrag von fat-lobyte » Mo Jul 30, 2012 12:48 pm

Sind das Zufällig Fehler der Standardbibliothek? Wie siehts mit einem C++-Helloworld-Programm aus?
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: g++ => clang

Beitrag von fat-lobyte » Mi Aug 22, 2012 12:41 pm

An dieser Stelle würde ich gerne einfach mal ein paar kleine Fakten über LLVM/Clang (im Vergleich zu GCC) posten.

Clang 11 Jahre alt, GCC ist 25 Jahre alt geworden. [1], [2]

GCC ist ungefähr 8 mal größer als Clang: [1], [2]
Clang besteht aus 0.9 Mio Zeilen Code, GCC aus 7.3 Mio. In Dateien sind das 9,000 gegen 77,000.

Der von Clang produzierte Code ist langsamer als der von GCC Produzierte Code, allerdings um nicht allzu viel. [3]

Clang ist dafür beim kompilieren schneller als GCC. [?]

Mehrere Projekte versuchen die "Monopolstellung" des GCC zu brechen, oder zumindest anzuzweifeln. Dazu gehören:
  • Debian, die ihr Archiv zur Probe mit Clang gebaut haben, und dabei 87.9 % aller Pakete bauen konnten [4].
  • Gentoo macht sich ebenfalls dafür bereit, Clang als Compileralternative anzubieten. [5]
  • FreeBSD wird ab version 10 den GCC als Standardcompiler durch Clang erstetzen. Das bedeutet, dass GCC nicht mehr standardmäßig installiert werden soll, und alle Pakete mit Clang gebaut werden. [6]
Während FreeBSD völlig auf Clang LLVM umsteigen will, gibt es es bei Debian und Gentoo keine derartigen Pläne - ganz im Gegenteil. GCC soll weiterhin der Standardcompiler bleiben. Allerdings sehen beide Distributionen einen Vorteil darin, einen zusätzlichen starken Compiler zu haben. [5] [7]

Es gibt Anstrengungen den Linux Kernel selbst mit Clang zu bauen [15]. Dies gelang bereits 2010 für einige Subsysteme [16]. Dafür sind Änderungen am Quellcode nötig und die größten Hürden sind vom Linux-Quellcode genutzte Spracherweiterungen des GCC [17].

Der Grund für den Start des Clang-Projektes war die Unwilligkeit der GCC-Entwickler den Compiler zu modularisieren um anderen Programmen den Zugriff auf Teilfunktionen gewähren zu können. [8], [9] Ein Zitat sticht dabei besonders heraus:
Richard M. Stallman hat geschrieben:One of our main goals for GCC is to prevent any parts of it from being
used together with non-free software. Thus, we have deliberately
avoided many things that might possibly have the effect of
facilitating such usage, ...
Außerdem war die Codebasis derart veraltet und kompliziert, dass es Anfängern fast unmöglich war den Code zu ändern, ohne anderen Code zu gefährden. Das schreckte neue Entwickler ab und ist einer der Hauptgründe für die popularität von Clang [8].

Clang warb lange Zeit mit seinen überlegenen Diagnostischen Nachrichten [10], allerdings zog GCC mit seinen letzten Releases nach [11]. Meiner Meinung nach sind die Nachrichten von Clang immer noch ein kleines Bisschen überlegen.

Clang und GCC unterstützen beide zu einem Großteil den neuen C++11-Standard. [12], [13] Damit sind beide Compiler der Konkurrenz (Visual Studio) weit voraus. [14]

LLVM ist bereits jetzt ein integraler Bestandteil von generischen Grafiktreibern (llvmpipe [18]). Es wird z.B. in der Gnome-Shell und in Unity [19] genutzt.

--------------

Das war's mit den Fakten, ab hier kommen nur noch Meinungen:

Da ich chronisch am "Shiny new Shit"-Syndrom Leide, würde ich Clang jederzeit bevorzugen. Mir gefällt das Interface, mir gefällt du Modularität, und mir gefällt das Entwicklungsmodell.

Aber ganz unabhängig davon freue ich mich, dass GCC einen Konkurrenten bekommt. Schon viel zu lange konnte dieser Dinosaurier unangefochten auf seinem Platz sitzen, was sich auch in einer gewissen Trägheit bemerkbar gemacht hat.
Ich hoffe darauf, dass Konkurrenz das Geschäft belebt, ähnlich wie Mozilla Firefox den Browsermarkt belebt hat nachdem Internet Explorer Jahrelang der Platzhirsch war.

Ich weiß nicht, welcher Compiler in ein paar Jahren als der Dominante aus diesem Duell herauskommen wird (ich habe da so ne Hoffnung) aber der Sieger und die Community wird auf jeden Fall von diesem Duell profitiert haben.


------------

[1] http://www.phoronix.com/scan.php?page=n ... px=MTE1OTg
[2] http://www.phoronix.com/scan.php?page=n ... px=MTE2MDk
[3] http://www.phoronix.com/scan.php?page=a ... lvm32_svn1
[?] Citation needed.
[4] http://clang.debian.net/
[5] http://www.phoronix.com/scan.php?page=n ... px=MTE2NDE
[6] http://www.phoronix.com/scan.php?page=n ... px=MTEwMjI
[7] http://www.phoronix.com/scan.php?page=n ... px=MTEzODQ
[8] http://channel9.msdn.com/Events/GoingNa ... on-Monkeys
[9] http://gcc.gnu.org/ml/gcc/2005-01/msg00008.html
[10] http://clang.llvm.org/diagnostics.html
[11] http://gcc.gnu.org/wiki/ClangDiagnosticsComparison
[12] http://clang.llvm.org/cxx_status.html
[13] http://gcc.gnu.org/projects/cxx0x.html
[14] http://msdn.microsoft.com/en-us/library/hh567368.aspx
[15] http://www.phoronix.com/scan.php?page=n ... px=MTE2NDE
[16] http://lists.cs.uiuc.edu/pipermail/cfe- ... 11711.html
[17] http://events.linuxfoundation.org/slide ... elbach.pdf
[18] http://www.mesa3d.org/llvmpipe.html
[19] http://www.golem.de/news/ubuntu-12-10-q ... 93922.html
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: g++ => clang

Beitrag von Xin » Mi Aug 22, 2012 12:57 pm

*daumen hoch*

Warum packst Du das nicht als Artikel ins Wiki?

c:compiler:start etwas öffnen - das ist eigentlich zu Schade, um hier im Forum wieder verloren zu gehen.

Ich guck auch nochmal, dass ich clang an den Start bekomme. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: g++ => clang

Beitrag von fat-lobyte » Mi Aug 22, 2012 3:04 pm

Xin hat geschrieben:*daumen hoch*

Warum packst Du das nicht als Artikel ins Wiki?

c:compiler:start etwas öffnen - das ist eigentlich zu Schade, um hier im Forum wieder verloren zu gehen.
Kann ich gern machen, allerdings in fast derselben Form (mit ausgebesserten Rechtschreibfehlern). Hab zu wenig Zeit um daraus nen richtigen Artikel zu machen.

Wo würde der hinkommen? Wie verlinkt und in welchem Kontext?
Xin hat geschrieben:Ich guck auch nochmal, dass ich clang an den Start bekomme. :-)
Keinen Stress, es läuft nicht davon. Das einzige was passiert wenn du wartest ist, dass es einfacher zu benutzen wird :-)
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: g++ => clang

Beitrag von Xin » Mi Aug 22, 2012 3:30 pm

fat-lobyte hat geschrieben:
Xin hat geschrieben:*daumen hoch*

Warum packst Du das nicht als Artikel ins Wiki?

c:compiler:start etwas öffnen - das ist eigentlich zu Schade, um hier im Forum wieder verloren zu gehen.
Kann ich gern machen, allerdings in fast derselben Form (mit ausgebesserten Rechtschreibfehlern). Hab zu wenig Zeit um daraus nen richtigen Artikel zu machen.

Wo würde der hinkommen? Wie verlinkt und in welchem Kontext?
Ich denke, c:compiler ist schon der richtige Ort, allerdings ist das mehr für die Einrichtung...
Halt!

http://www.proggen.org/doku.php?id=star ... er:c:start

Hier ist der noch viel richtigere Ort. ;-)
Das ganze ist noch etwas verweist, aber da sollte es hin. Genauso, wie da ein Link und eine kurze Beschreibung zu clang hinsollte.
fat-lobyte hat geschrieben:
Xin hat geschrieben:Ich guck auch nochmal, dass ich clang an den Start bekomme. :-)
Keinen Stress, es läuft nicht davon. Das einzige was passiert wenn du wartest ist, dass es einfacher zu benutzen wird :-)
Aber es verfliegt der Pioniersgeist. ;)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: g++ => clang

Beitrag von fat-lobyte » Mi Aug 22, 2012 6:52 pm

Xin hat geschrieben:http://www.proggen.org/doku.php?id=star ... er:c:start

Hier ist der noch viel richtigere Ort. ;-)
Das ganze ist noch etwas verweist, aber da sollte es hin. Genauso, wie da ein Link und eine kurze Beschreibung zu clang hinsollte.
Wird gemacht.
Xin hat geschrieben:
fat-lobyte hat geschrieben: Keinen Stress, es läuft nicht davon. Das einzige was passiert wenn du wartest ist, dass es einfacher zu benutzen wird :-)
Aber es verfliegt der Pioniersgeist. ;)
Ich glaube, jetzt sind wir auf derselben Wellenlänge ;-)
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: g++ => clang

Beitrag von Xin » Do Aug 23, 2012 10:47 am

fat-lobyte hat geschrieben:
Xin hat geschrieben:
fat-lobyte hat geschrieben: Keinen Stress, es läuft nicht davon. Das einzige was passiert wenn du wartest ist, dass es einfacher zu benutzen wird :-)
Aber es verfliegt der Pioniersgeist. ;)
Ich glaube, jetzt sind wir auf derselben Wellenlänge ;-)
Ich glaube, wir sind viel häufiger auf derselben Wellenlänge, als Du denkst...

Das Blöde ist, dass ich am Tag 10 Stunden für den Job brauche und dann - wie z.B. vorgestern um 20:30 Uhr nach Hause komme, der Scheibenheber kaputt ist und für die Nacht Regen angekündigt ist - unabhängig davon, dass man Autos nicht mit offenen Scheiben rumstehen lässt. Ein kaputter Scheibenheber ist nicht alltäglich, aber solche unverschiebbaren Probleme hat man halt regelmäßig.
Gestern gegen 2 Uhr in der Frühe funktionierte ein neuer Scheibenheber und man konnte die Scheibe wieder schließen. Um 2:30 setzte der Regen ein. Ein Nachbar half mir beim Einbau, es ist einfach eine ungünstige Zeit, mal eben zur Werkstatt zu fahren. Dann duschen, dann ein paar Stunden schlafen, dann wieder zur Arbeit. Gestern fuhr ich dann nach der Arbeit mit meiner Tante einkaufen, da sie kein Auto hat. Dann Schlaf nachholen, heute früh zur Arbeit. Auf dem Weg zum Treppenhaus sprach mich ein anderer Nachbar an, ältere Leute, ein für sie allein unlösbares Problem, ob ich da abends mal helfen könnte. Klar, ist doch selbstverständlich.

Es ist nicht der Pioniersgeist, der Wunsch auszuprobieren und zu machen, der fehlt. Das Problem ist, dass ich in dieser Woche noch kein einzige Minute dazu gekommen bin, mich überhaupt mit Verstand an den Computer zu setzen. Das war im Studium einfach alles leichter. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten