Clang

Clang ist ein moderner Compiler für verschiedene Programmiersprachen, darunter auch C++. Installiert werden kann er zum Beispiel unter Ubuntu mit dem Befehl

sudo apt-get install clang

Unter Fedora lautet der Befehl

yum install clang

Ob es den Compiler auch im Paketmanager anderer Linux-Distributionen gibt, muss jeder selber schauen (Meldung dazu bitte in den Kommentaren). Angenommen, wir haben eine Datei test.cpp mit einigem C++-Code zum Testen, so lässt sie sich folgendermaßen kompilieren (gilt für alle Linux- und Mac-Varianten):

clang test.cpp -o test

Der Bestandteil -o test generiert eine Datei ausführbare Datei test, die dann wie üblich mit dem Befehl ./test ausgeführt werden kann.

g++

g++ ist der de-factor-Standard-C++-Compiler unter Unix-Betriebssystemen (und meines Wissens unter den meisten auch schon vorinstalliert). Nutzen lässt er sich analog zu Clang mit dem Befehl

g++ test.cpp -o test

Es gibt von g++ auch eine Portierung für Windows, genannt MinGW. Sie kann hier gefunden werden (eine Installations-Anleitung kann hier gefunden werden, unter dem Punkt “Command Line Interface Installer” – wichtig: bitte unbedingt den Hinweis beachten, dass MinGW nicht in ein Verzeichnis installiert werden sollte, welches Leerzeichen im Namen enthält).

Visual Studio Express

Eine kostenlose IDE für Windows ist Visual Studio Express von Microsoft. Sie bringt einen Compiler und einen komfortablen Text-Editor mit sich und kann zur Erstellung von Anwendungen für Windows genutzt werden. Downloads sind hier für Windows 7/8 (Visual Studio Express 2012 für Windows Desktop)  bzw. hier für ältere Windows-Versionen (Visual C++ 2010 Express) erhältlich. IDEs werden normalerweise nicht über die Kommandozeile bedient, sondern über Tastenkombinationen und Menüeinträge in der Anwendung selber. Um eine ausführbare Datei mit Visual Studio zu erstellen, muss zuerst ein neues Projekt angelegt werden (Menü Datei -> Neu -> Project... -> Win32-Konsolenanwendung; in den folgenden Einstellungen am besten ein leeres Projekt erzeugen). Diesem wird nun anschließend Dateien hinzugefügt (Rechtsklick in der linken Spalte auf Quelldateien -> Hinzufügen -> Neues Element... -> C++-Datei). Das Projekt kann anschließend über die Menüpunkte Erstellen -> Projektmappe erstellen oder die Taste F7 erstellt und über den Menüpunkt Debuggen -> Starten ohne Debugging (beziehungsweise die Tastenkombination Strg+F5) gestartet werden.

 

So, damit ist das Thema Entwicklungsumgebung erledigt (wer noch seine Lieblings-Entwicklungsumgebung gern mit in diese Liste aufgenommen sähe, kann mir gern eine Mail mit einer ausführlichen Nutzungsanleitung für Windows und Linux schicken). Um zu prüfen, ob auch alles funktioniert, legen wir uns eine Datei test.cpp mit dem folgenden Inhalt an (den Inhalt bitte vorerst nicht hinterfragen – Details dazu kommen im nächsten Artikel in Kürze):

#include <cstdio>

int main()
{
    printf( “Hello World!\n” );
    return 0;
}

Diese Datei kompilieren wir und führen sie anschließend aus. Wenn alles geklappt hat, sollte nun ein optimistisches “Hello World!” auf dem Bildschirm prangen. Wenn dem so ist: gespannt sein auf den nächsten Artikel! Wenn es Probleme gibt: bitte in den Kommentaren melden.

1 / 2

Kommentare (36)

  1. #1 Wolfgang
    April 3, 2013

    Bei Fedora installiert ein
    “yum install clang”
    den compiler.

  2. #2 Marcus Frenkel
    April 3, 2013

    Danke, ist aufgenommen.

  3. #3 CM
    April 3, 2013

    Toll! C++ ist meine aktuelle Gebrauchssprache Nr. 1 (daneben viel R & Python), da kann ich bestimmt was lernen – ich bin nämlich zu 80 % Autodidakt und gerade der neue Standard ist mir noch nicht sehr vertraut.

    Mich interessiert insb. auch – wenn ich so vermessen sein darf – welche (wissenschaftlichen) Bibliotheken so empfohlen werden im Laufe der Artikelserie und insb. in den Threads. boost kennt jeder, aber es gibt ja noch etwas mehr.

    Gruß,
    Christian

  4. #4 Dr. Webbaer
    April 3, 2013

    Warum wird denn “programmiert”?

  5. #5 CM
    April 3, 2013

    @webbae: a) Weil es Spaß macht. Und b) damit Sie solche Fragen in diesem Forum stellen können. Also: Wie ist die Frage gemeint? 😉

  6. #6 znEp
    April 3, 2013

    Bis auf eine Sache läuft das schon mal. ich musste bei mir die austauschen gegen die .
    Muss ich noch Libraries runterladen oder woran liegt das?
    (Ubuntu 12.04; gcc 4.6.3)

    Und weil es thematisch passt mach ich hier mal kurz Werung, nämlich für Fiona lernt Programmieren https://fionalerntprogrammieren.wordpress.com/ 🙂
    sie blogt seit einiger Zeit wie sie sich selber und mit Hilfe von Freunden Programmieren beibringt.

    Freu mich schon auf die nächsten Teile

  7. #7 znEp
    April 3, 2013

    Ups er hat wegen den spitzen Klammern ‘cstdio’ und ‘stdio.h’ verschluckt. Die beiden musste ich austauschen

  8. #8 Dr. Webbaer
    April 3, 2013

    @CM
    Das Programmieren bzw. das IT-gestützte Automatisieren von Prozessen oder Projekten dient dem allgemeinen sozialen Fortkommen.

    Wenn Sie bspw. Datendesign betreiben, dann tun Sie dies nicht ohne Grund, denn die Datenhaltung repräsentiert einen sozialen Status und insbesondere auch das Bemühen diesen dahingehend zu ändern, dass sogenannter Mehrwert entsteht.

    In der Wirtschaft wie auch im privaten Bemühen ist die Programmierarbeit mit Aufwand verbunden und dient in jedem Fall sozialen Zwecken,

    Diesbezüglich hätte sich der Schreiber dieser Zeilen bei diesem Thema einhergehende Reflektion versprochen und stände auch bereit, sozusagen plattform- und paradigmenübergreifend ein wenig zur Hand zu gehen…

    MFG
    Dr. W

  9. #9 Marcus Frenkel
    April 3, 2013

    @znEp
    ‘cstdio’ ist die C++-Entsprechung der ‘stdio.h’ von C. Sollte eigentlich alles immer dabei sein. Die Datei hat auch die Endung “cpp” und nicht nur “c”, ja? Und es wurde auch nicht als C-Code kompiliert?

    Schau doch bitte einmal im Ordner /usr/include/c++/4.6.3, ob sich dort die cstdio-Datei befindet.

  10. #10 znEp
    April 3, 2013

    Liegt daran das ich gcc statt g++ genommen habe m)
    mit nem -x c++ gehts dann ja auch 🙂

  11. #11 HF
    April 3, 2013

    Programmieren ist ein faszinierendes Hobby, aber vielleicht ist eine kleine Warnung angebracht:

    Gib einem Menschen ein Stück Software, und du frustrierst ihn für drei Tage.
    Lehre einen Menschen programmieren, und du frustrierst ihn für den Rest seines Lebens.

  12. #12 CM
    April 3, 2013

    @webbaer: Aha. Ehrlich gesagt, verstehe ich das Geschriebene nur ungefähr. Ich persönlich gönne mir jedenfalls das Bisschen wissenschaftlichen/programmiertechnischen Narzissmus, dass sich ab und an trotz des durchaus – @HF: BG – vorhandenen Frustes einstellt.

    Also, auf diese Frage mögen Andere antworten, die das besser können.

    Gruß,
    Christian

  13. #13 Doomtrain
    April 3, 2013

    Ach ja C++
    Hab ich nie wirklich gelernt, kann nur rudimentär die Syntax. Von daher find ich die Wahl schon sehr gut. Zudem ist es sowohl nostalgisch als auch modern. ^^

    Ich selbst scheib meinen Code normal in C# oder Perl (Python hab ich mir auch mal genauer angesehn). In speziellen Fällen auch in T-SQL (womit man natürlich keine Programme schreibt).

    Die meines erachtens größte Herausvorderung ist die Wahl der richtigen Biblioteken (man muss die ja erst mal kennen).

    Ich freu mich auf jeden Fall schon auf den nächsten Artikel.

  14. #14 DeLuRo
    April 3, 2013

    @HF #11: ‘…du frustrierst ihn für den Rest seines Lebens”

    Nöö, eigentlich nicht; das halte ich für eine Spruchanalogie, die unzulässig aus einer älteren Spruchversion umgewandelt wurde. Das Problem mag bei der Betrachtung von Programmierung als “faszinierendem Hobby” liegen.

    Wenn man Programmieren nur auf Hobbyniveau lernt, mag so etwas passieren können — das ist wie beim Handwerken, ob nun als Schreiner, Metallbauer oder Steinmetz. Man macht immer wieder Fehler und weiß nicht warum.

    Falls man aber “so richtig” Programmieren lernt, durch alle Paradigmen hindurch und mit informatischem Hintergrund, und dazu ausreichend Anwendungserfahrung sammelt (das ist mein Erleben des Themas), dann klappt es auch mit fast jeder Programmerstellung. Es kommt darauf an, die Verfahren und Tricks dahinter zu verstehen. Ein bisschen Talent dafür kann auch nicht schaden.

  15. #15 Stefan W.
    https://demystifikation.wordpress.com
    April 3, 2013

    Kann man auch Hirnchirurgie auf Hobbyniveau lernen?

    Mich wundert etwas, dass das Linken so aus der Mode gekommen ist. Früher musste man die Programme nicht nur kompilieren, sondern auch noch linken, um ein lauffähiges Programm zu bekommen. Dass die Werkzeuge nach dem Kompilieren das Linken automatisch anstoßen bedeutet ja nicht, dass es nicht stattfindet.

    Wenn man Forenfragen zu C/C++ liest, dann sind rund die Hälfte der Fehlermeldungen, die vorgestellt werden, Linkermeldungen, und obwohl es explizit dabeisteht, und für die Lösung des Problems eklatant wichtig, wird es als “Kompilerfehler” bezeichnet.

  16. #16 Marcus Frenkel
    April 4, 2013

    @Stefan W.
    Daran ist wohl der gcc ein wenig Schuld, würde ich sagen. Der versteckt das Linken so ein wenig hinter dem gleichen Aufruf, der zum Compilieren stattfindet und macht ihn nicht mehr explizit. Im Visual Studio sieht das ein klein wenig anders aus: hier sind in den Einstellungen Compiler und Linker klar voneinander getrennt, und Linker-Fehler machen sich außerdem dadurch bemerkbar, dass man sie nicht doppelt anklicken kann, um zu der Fehlerstelle zu springen.

  17. #17 Marcus
    Mannheim
    April 4, 2013

    @ Dr. Webbaer #8
    Also ich wollte sagen, dass etwa zu dieser Zeit die Verwirrung durch die ähm … und die Verwirrung wird all jene verwirren, die nicht wissen; niemand wird wirklich genau wissen, wo diese kleinen Dinge zu finden sind, die verknüpft sind mit einer Art von Handarbeitszeug, das durch die Verknüpfung verknüpft ist; und die Jungen sollen nicht wissen, wo die Dinge die jene Väter erst um 8 Uhr am vorhergehenden Abend dorthin gelegt hatten, kurz vor Glockenschlag.

  18. #18 Dr. Webbaer
    April 4, 2013

    @CM

    Ich persönlich gönne mir jedenfalls das Bisschen wissenschaftlichen/programmiertechnischen Narzissmus (…)

    Das wäre dann aber kein Programmieren, sondern Frickeln.

    SCNR
    Dr. W

  19. #19 CM
    April 4, 2013

    😉

  20. #20 Anwalts_Liebling
    https://freischissblog.wordpress.com/
    April 4, 2013

    Lieber Herr Webbär, auch ich gehöre zu der grossen Schar von Programmierern (COBOL, ABAP, JCL unter MVS). Ich darf glaubhaft versichern, das dies weder 1987 meine Mitmenschen beeindruckt hat, noch 2013 jemanden interessiert. Einziger Makel, den ich aber gern auf mich nehme: der neidische Blick auf das Gehalt. Und selbst da bin ich ehrlich: Falsche buchungen meiner Programme kann ich reparierern. Falsche Spritzen meiner Frau (Krankenschwester) lassen sich eher nicht korrigieren….insofern würde ich sagen, das meine Frau unterbezahlt ist,,, aber das ist ein anderes Thema.

    OT: mit C++ komme ich als Assembler-Entwickler gut zurecht – also: ich bin gespannt!

  21. #21 Dr. Webbaer
    April 4, 2013

    @Anwalts_Liebling

    auch ich gehöre zu der grossen Schar von Programmierern (COBOL, ABAP, JCL unter MVS). Ich darf glaubhaft versichern, das dies weder 1987 meine Mitmenschen beeindruckt hat, noch 2013 jemanden interessiert.

    Ihr Kommentatorenfreund, der Webbaer, ist jetzt zum Beispiel beeindruckt: ein COBOL-Programmierer!, die gibt’s nicht mehr so-oft. Eine schreckliche Sprache, aber sie hat den Job getan. – Allerdings geht es hier nicht darum zu beeindrucken, sondern zu erklären. Hatten Sie nie das Bedürfnis genau zu verstehen und erklären zu können, warum programmiert wird?

    MFG
    Dr. W (der für den Einstieg ins Programmieren ebenfalls Visual Studio Express nahelegt)

  22. #22 Scr
    April 4, 2013

    Unter Arch-Linux kann man clang mit “pacman -S clang” installieren. (Auch wenn Arch-Linux Benutzer das vermutlich nach der Installation auch so wissen.)

    • #23 Marcus Frenkel
      April 4, 2013

      Das würde ich auch sagen. 😉

  23. #24 Anwalts_Liebling
    https://freischissblog.wordpress.com/
    April 4, 2013

    Tja Hr. Webbär, warum programmiert wird? Weils Spass macht? Weil es mein Broterwerb ist? Weil mich Technik fasziniert? Weil es mir einfach “liegt”? – Tausend Gründe – ach ja – der wichtigste, weil mein Arbeitgeber das auch gerne wollte und dafür sogar die Umschulung finanzierte, da ich auf der “Schule” sogar noch RPG (Report-Generator) und BS2000 gelernt habe (unter Roscoe, wers noch kennt)… und was eine Pet-Maestro von Siemens ist… kucken… Datenbanken? Netzwerkdatenbank war angesagt 🙂

  24. #25 Dr. Webbaer
    April 4, 2013

    @Anwalts_Liebling
    Wenn Sie verstehen warum programmiert wird, ist es leichter zu verstehen wie programmiert wird.

    MFG
    Dr. W (der auch einige Zeit bei den IT-nahen Horsten beratend unterwegs war, die Probleme mit der Marktwirtschaft haben, diejenigen, die sich heute auch gerne PIRATEN nennen ohne es wirklich zu sein)

  25. #26 Sabine
    April 4, 2013

    Hallo,
    ich trau mich mal und frage einfach: Wie lege ich die Datei an sich an? So, dass ich dann etwas hineinschreiben kann?

  26. #27 znEp
    April 4, 2013

    @Sabine
    Kommt aufs Betriebssytem an. Unter Linux nutz ich für kleinere Sachen nano(einfach mit sudo nano dateiname.erweiterung).
    Unter Windows bin ich mit dem Notepad++ immer gut gefahren.

  27. #28 Marcus Frenkel
    April 4, 2013

    @Sabine
    Wie znEp schon sagte: unter Linux tut es ein “nano dateiname.cpp” im passenden Verzeichnis oder auch “touch dateiname.cpp” und dann ein Öffnen im bevorzugten Editor. Unter Windows kommt es drauf an: wenn eine IDE wie das Visual Studio benutzt wird, dann einfach an die Anleitung halten, da wird die Datei automatisch angelegt. Ansonsten im Windows Explorer Rechtsklick -> Neu -> Textdokument, und dann einen Namen vergeben.

  28. #29 rolak
    April 4, 2013

    Solche Fragen sind wichtig, Sabine. Wenn mir nicht bei verschiedensten Menschen im Zuge irgendwelcher ‘Wie geht das?’-Erklärungen gemerkt hätte, wie ungemein grundlegend selbst bei täglich mit Computern Umgehenden teilweise angefangen werden muß, würde ich immer noch Fachchinesisch predigen… Angeblich klappt meine Interpretation der Schreck- und Abwehrmimik schon ganz gut 😉

  29. #30 rolak
    April 4, 2013

    mir .. gemerkt hätte

    Weia^^ Bitte nach Belieben mit den passenden Teilen von “ich .. aufgefallen wäre” austauschen. Danke.

  30. #31 Sabine
    April 4, 2013

    @ znEp und rolak
    Vielen Dank für Tip und Zuspuch! Jetzt (keine 3 Stunden später: Datei erstellt unter Ubuntu 11.10 (mit nano) und kompiliert wie angegeben – also: Programm geschrieben. Jedenfalls behauptet der Dateimanager, es gäbe da ein ausführbares Programm. Es gibt auch einen hübschen Button. Es passiert nur nichts, wenn ich drauf klicke… Aber wenn meine Fortschritte in diesem Tempo weitergehen, dann wird es spätestens morgen? übermorgen? Es gibt Hoffnung! :o)

  31. #32 Marcus Frenkel
    April 4, 2013

    @Sabine
    Draufklicken hilft bei einer Konsolen-Applikation nichts. 😉
    Die muss aus der Shell heraus mit “./test” gestartet werden, damit man etwas sieht.

  32. #33 Sabine
    April 4, 2013

    Juchhuuuu!!!

  33. #34 rolak
    April 4, 2013

    btw: Bei ‘shell’ habe ich automagisch immer zwei Gesichter vor Augen: Tony und Ping. Der ja auch iwie zum Computer paßt…

  34. #35 Anwalts_Liebling
    April 5, 2013

    @WerbeBär: Das verstehe ich nicht… für mich ist Programmieren Talent. Man hats oder man hats nicht. Wer’s nicht hat wird auch nie kapieren. Ich habe auch kein Talent zum Zeichnen – also lasse ich die Finge davon.
    Anwalts_Liebling (der mit allwissenden externen Beratern auch heute noch Probleme hat, denn er hasst Menschen, die wie bestimmte Fliegen überall abkupfern und das woanders als eigene Leistung ausgeben)

  35. #36 Dr. Webbaer
    April 5, 2013

    @Anwalts_Liebling
    Üblicherweise dient Software bzw. deren Entwicklung dem Wirtschaftsbetrieb, insofern gilt statt ‘Das verstehe ich nicht… für mich ist Programmieren Talent.’:
    Programmieren unterstützt den Betrieb.

    Das Talent dürfte darin bestehen das Geschäftsmodell zu verstehen und einem DBS so zuzuführen, dass bestehende Prozesse unterstützt werden und noch kommende bereits im Datenmodell/Geschäftsmodell angelegt sind. Dabei ist es wichtig die Entitäten bestmöglich zu identifizieren, übrigens nicht nur diejenigen, die direkt das Geschäftsmodell betreffen.

    Das ist einerseits nicht ganz einfach und andererseits ist das vielen nicht bekannt. Wäre es bekannt, hätten viele, die im Bereich der Softwareentwicklung herumspringen, mehr Geld in der Tasche und ein positiveres Verhältnis zur Marktwirtschaft.

    MFG
    Dr. W (der sich mit seiner Beratungsleistung natürlich bei denjenigen, die bevorzugt frickeln oder mit Algorithmen sozusagen spielen wollen, nicht unbedingt beliebt macht, loge)

    PS: Sie können vielleicht mal kurz skizzieren, was Sie eigentlich machen.