25. April 2018 :\Users\brf09510\svn\doku\trunk\compman\SC-COMP.TEX Bedienung der C-

1. GNU-C Gnu-C/C++ ist ein Open-Source- und Freeware-Compiler, der bei Beachtung der Benut- zungsbedingungen (siehe Datei COPYING) legal und frei verwendet werden darf. Er wurde als portabler Compiler f¨urUnix-Umgebungen konzipiert. F¨urPCs unter Windows steht er in den zwei Versionen MinGW und zur Verf¨ugung. Die DJGPP-Version von DJ Delorie und die emx-Installation von Eberhard Matthes sind veraltet. Unter Linux ist der Compiler meistens bereits installiert; falls er fehlt, helfen die Distribution-packages weiter. Auf einem Mac steht der llvm-Compiler (auch unter dem irref¨uhrendenNamen gcc) bereit. Die Bedienungshandb¨ucher finden sich im Internet unter http://gcc.gnu.org/onlinedocs/ Eine Ubersicht¨ ¨uber alle Optionen finden Sie unter http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Option-Summary.html#Option-Summary Eine (umfangreiche) hervorragende Beschreibung auf englisch bietet das Buch The Definitive Guide to GCC William von Hagen 2006, 978-1-59059-585-5, 1-59059-585-8 http://sensperiodit.files.wordpress.com/2011/04/hagen-the-definitive-guide-to- gcc-2e-apress-2006.pdf

1.1. Aktivieren und Starten von Cygwin im CIP-Pool Vor dem Start der GNU-Compiler-Collection in den CIP-Pools muß ein Cygwinfenster mit einer Linux--shell gestartet werden. Das geschieht in einem Windows-Kommandofenster (cmd.exe). cygwin Aktivieren des F:\BAT\cygwin.cmd wenn es mal nicht geht cd /cygdrive/c Wechseln auf (z.B.) Laufwerk C: gcc -std= -pedantic -Wall -o bsp bsp.c Standard-C-Ubersetzung¨ Damit stehen zwei C-Compiler (gcc, clang), zwei C++-Compiler (g++, clang++) und ein -Compiler (gfortran) zur Verf¨ugung. Das bash-Fenster wird mit dem Kommando exit wieder beendet.

1.2. Aktivieren und Starten von MinGW im CIP-Pool Vor dem Start der GNU-Compiler-Collection in den CIP-Pools und vor dem Start des Informationsprogrammes INFO muß der Compiler aktiviert werden. k:\RZ\KURSE\BRAUN\MinGW\MW.BAT Damit stehen ein C-Compiler (gcc), ein C++-Compiler (g++), ein Fortran-Compiler (gfort- ran) zur Verf¨ugung. Mit k:\RZ\KURSE\BRAUN\dislin\dl.bat erhalten Sie zus¨atzlich zu MinGW die Graphiklibrary dislin. Die Compiler werden im Windows-Kommandofenster direkt aufgerufen. Bei Bedarf kann mit msys 1.2. Aktivieren und Starten von MinGW im CIP-Pool 2 ein Linux-Terminal (bash) gestartet werden.

1.3. Start des Compilers Der C-Compiler wird im einfachsten Fall mit dem Kommando gcc dateiname gestartet, wobei der Dateityp (.c; .C, .cc, .cpp, .cxx) oder die Option -x die verwendete Sprache (C, C++, ada, f77, f95, java) bestimmt. F¨urdie Steuerung der Ubersetzung¨ steht eine Vielzahl weiterer Optionen zur Verf¨ugung.Die Ubersetzung¨ steht nach Unix-Gepflogenheiten in der Datei a.out (Windows: a.exe). Entweder muß diese Datei umbenannt werden oder es muß ein Ausgabedateiname angegeben werden. gcc dateiname.c Ubersetzung¨ der angegebenen Datei mit C-Quelle nach a.exe gcc -o dateiname dateiname.c Ubersetzung¨ der angegebenen Datei mit C-Quelle nach dateiname.exe Der C++-Compiler kann mit demselben Kommando gestartet werden, dann m¨ussenjedoch alle C++-Bibliotheken explizit angegeben werden. Einfacher ist der Start mit g++: g++ dateiname.cxx Ubersetzung¨ der angegebenen Datei mit C++-Quelle nach a.exe g++ -o dateiname dateiname.cpp Ubersetzung¨ der angegebenen Datei mit C++-Quelle Elementare Varianten des Ubersetzungskommandos¨ sind (diese Varianten k¨onnenkombi- niert werden. Die Optionen pedantic, Wall und ansi sollten immer verwendet werden): gcc -x c dateiname.c Ubersetzung¨ der angegebenen C-Datei (Sprachangabe) gcc -c dateiname.c Ubersetzung¨ ohne Montage gcc -S dateiname.c Ubersetzung¨ ohne Assemblierung (Nachassemblierung as dateiname.s) gcc -E dateiname.c nur Pr¨aprozessor(Dateiausgabe mit >) gcc -I VZ dateiname.c Ubersetzung¨ mit weiteren include-Dateien im Verzeichnis VZ gcc -v dateiname.c ,,verbose“ Ubersetzung¨ mit viel Hintergrundinformation gcc -traditional dateiname.c abgeschaltet seit 2.95 gcc -ansi dateiname.c Ubersetzung¨ nach dem ANSI-C-Standard (C88) gcc -std=c11 dateiname.c Ubersetzung¨ nach dem ANSI-C-Standard (C99) Weitere Werte: c90/c89/iso9899:1990, iso9899:199409, c99/c9x/iso9899:1999/iso9899:199x, c++98, c++11, c++14 Spezielle Werte: gnu89, gnu99 1.3. Start des Compilers 3

gcc -pedantic dateiname.c Ubersetzung¨ mit sch¨arferer Uberpr¨ufung¨ gcc -pedantic-errors dateiname.c Pedantische Fehler statt pedantischer Warnungen gcc -Wall dateiname.c Ubersetzung¨ mit Ausgabe aller Warnungen gcc -O2 dateiname.c Ubersetzung¨ mit Optimierung 2; Weitere Werte: Os O1 O2 O3 gcc dateiname.c -s Ubersetzung¨ ohne Symboltabelle im Programm (spart Platz aber De- bugger kennt Namen nicht) gcc dateiname.c -L VZ Montage mit weiteren Bibliotheken im Verzeichnis VZ gcc dateiname.c -lxyz Montage mit Bibliothek libxyz.a gcc dateiname.c VZ/libxyz.a Montage mit Bibliothek libxyz.a (explizit) gcc dateiname.c -static Statische Montage (alles im .exe) gcc -g dateiname.c gdb-Informationen (Debugger) Weitere Optionen und ausf¨uhrliche Beschreibungen k¨onnenim Internet unter https://gcc.gnu.org/onlinedocs/gcc/Invoking-GCC.html, die Optionen speziell unter https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html#Option-Summary nachge- lesen werden. Der Compiler erledigt Ubersetzung¨ und Montage in einem Schritt und erzeugt eine .exe- Datei, die direkt gestartet werden kann. Das Informationsprogramm der GNU-Compiler-Collection wird mit dem Kommando INFO gestartet und erlaubt mit selbsterkl¨arendenTastaturbefehlen, Informationen ¨uber den Com- piler an den Bildschirm zu holen. Es wird mit q (quit) wieder verlassen. info Informationen ¨uber GNU Die Gr¨oßeder Exe-Dateien kann mit der Option -s reduziert werden. Dabei werden jedoch die Symboltabellen entfernt und der Debugger geht nicht mehr. gcc -o file -s file.c Falls Sie C++ mit dem Kommando gcc starten wollen, m¨ussendie C++-Bibliotheken in der richtigen Reihenfolge angegeben werden. Mit dem Spezialkommando g++ geschieht das automatisch. g++ -o file file.cpp gcc -o file file.cpp -lstdc++

1.4. Starten von ¨ubersetzten gcc-Programmen unter Windows Bei cygwin und MinGW liegen die ¨ubersetzten Programme als ausf¨uhrbareWindows- Dateien (.exe) vor. MinGW-Ubersetzungen¨ k¨onnenjederzeit in einem cmd-Fenster gest- artet werden. Bei cygwin existiert derzeit keine M¨oglichkeit und (soweit mir bekannt) kein 1.4. Starten von ¨ubersetzten gcc-Programmen unter Windows 4

Trick, die Ubersetzungen¨ direkt unter Windows aufzurufen. Es muss in jedem Fall vorher eine cygwin-shell laufen. Dazu existieren zwei Alternativen: 1. Nachgeben! Starten einer cygwin-shell und anschließend des Programmes: cygwin cd /cygdrive/c/Users/name/vz runProgram.exe 2. Beides gleichzeitig in der richtigen Reihenfolge mit Pfadangaben (lustigerweise halb in Windows- und halb in Linuxschreibweise) und der Option -c: c:\cygwin\bin\bash -c /cygdrive/c/Users/name/vz/runProgram.exe Die Pfadangaben k¨onnenentfallen, wenn sie voreingestellt sind - bei Windows im PATH und bei cygwin in ~/.bashrc. 3. Wenn auf dem Rechner Cygwin installiert ist, kann man Programme in einem cmd- Fenster starten, wenn man vorher den Pfad der Cygwin-dlls gesetzt hat: path c:\cygwin\bin;%path% cd c:\Users\name\vz runProgram.exe Die fr¨uherm¨ogliche Option -mno-cygwin wurde entfernt. Die Option -mwindows erzeugt GUI-Programme. Zur Erzeugung nativer Windows-Programme muss MinGW verwendet werden. Im Cygwin- setup kann ein entsprechender Cross-Compiler installiert werden, der ger¨uchteweise (ich habe es nicht ausprobiert!) sogar schneller compiliert.

1.5. Bemerkungen zu Linux Werden in Linux die Funktionen aus ben¨otigt,m¨ussensie explizit mit -lm ange- geben werden: gcc dateiname.c -lm g++ dateiname.c -lm

1.6. Installation vom Cygwin auf dem eigenen Rechner http://www.cygwin.com/ Homepage setup-x86.exe Installationsprogramm f¨ur32-bit-Inst. setup-x86_64.exe Installationsprogramm f¨ur64-bit-Inst.

1.7. Installation vom MinGWin auf dem eigenen Rechner http://www.mingw.org/ Homepage Minimalist GNU for Windows (Downloads) https://sourceforge.net/projects/mingw/files/ Download MinGW (dort Installer) https://sourceforge.net/projects/mingw/files/Installer/ Download MinGW (dort Installer) Der Link Downloads leitet auf eine Soureforgeseite. Dort Installer/mingw-get/mingw-get- setup.exe klicken und downloaden (2013-10-4). Eventuell neuere Versionen w¨ahlen. mingw-get-setup.exe Installationsprogramm Das Installationsprogramm wird als Administrator gestartet und installiert seinerseits den MinGW Installation Manager. Im danach ge¨offnetenFenster klickt man im Basic Setup das Paket mingw32-base (mark for installation) und eventuell weitere Pakete (mingw32- gccfortran, mingw32-gccg++). Im Men¨ubefehl Installation/Apply Changes wird die In- stallation dann gestartet. Wurde etwas vergessen oder will man pl¨otzlich mehr, kann der Installation Manager jederzeit erneut aufgerufen werden. 1.7. Installation vom MinGWin auf dem eigenen Rechner 5

Der Compiler gcc kann im MSYS-Fenster direkt benutzt werden. Auch der Debugger gdb ist verf¨ugbar. In Kommandofenstern muss sein genauer Standort dem Betriebssystem im Pfad mitgeteilt werden. set path=C:\MinGW\bin;%path% Will man das volle MinGW benutzen, kann man weitere Verzeichnisse in den Pfad aufneh- men: set path=C:\MinGW\bin;C:\MinGW\msys\1.0\bin\;%path% Dieses Kommando kann bequem in eine Datei (z.B. MW.BAT) geschrieben werden und dann nach Start der Kommandozeile indirekt aufgerufen werden. Schließlich kann man eine Linux-Konsole ¨offnen: \MinGW\msys\1.0\msys.bat% Im CIP-Pool lautet das Kommando in der Datei MW.BAT: set path=K:\RZ\KURSE\BRAUN\MinGW\bin;%path%

1.8. Festplattensituation nach Installation von cygwin In Windows haben Sie neben dem Administratoraccount meist noch einen eigenen Userac- count, der in vielen F¨alleneinfach Ihr Vorname ist. Ich verwende daf¨ur”fritz“1. Ich gehe weiter davon aus, dass Sie einen 64-Bit-Rechner haben und Ihr System auf der Festplatte C: liegt. Nach Installation von cygwin liegt auf der Festplatte C: ein neues Verzeichnis C:\cygwin64\ vor, in dem sich die gesamte cygwin-Installation befindet. Insbesondere existieren hier die ¨ublichen Linux-Verzeichnisse bin, dev, etc, home, lib, sbin, tmp, usr und var. Das heißt, dass Sie hier ¨uber ein weiteres (Linux-)Homeverzeichnis verf¨ugen,in dem jeder angemeldete User Ihres Rechners ein Unterverzeichnis mit seinem Namen erh¨alt,in Ihrem Fall also c:\cygwin64\home\fritz. Das ist jetzt Ihr cygwin-Homeverzeichnis. Ihr Windows-Homeverzeichnis C:\Users\fritz bleibt davon unbeeinflußt. Wenn Sie cygwin starten, befinden Sie sich automatisch in Ihrem cygwin-Homeverzeichnis. Es wird mit ~ bezeichnet und heißt ausf¨uhrlich /home/fritz. Hier sehen Sie schon zwei Bezeichnungen f¨urdasselbe Verzeichnis: Die Windows-Bezeichnung und den wah- ren Ort auf der Festplatte C:\cygwin64\home\fritz und die virtuelle cygwin-Bezeichnung /home/fritz. Linux kennt keine Laufwerke, sondern nur einen einheitlichen Dateibaum, der mit / beginnt. Alle vorhandenen Windows-Laufwerke werden daher von cygwin in einem virtuellen Ver- zeichnis /cygdrive als Unterverzeichnisse, geschrieben mit Kleinbuchstaben zug¨anglich ge- macht (gemountet). Ihre Windows-Festplatte C: heißt also im cygwin-Fenster /cygdrive/c, ein vielleicht vorhandener USB-Stick E: /cygdrive/e. Von diesem Verzeichnis k¨onnenSie weiter in die Tiefe gehen, so dass auch alle Windows-Dateien verf¨ugbarsind. So heißt Ihr Windows-Homeverzeichnis im cygwin-Fenster jetzt /cygdrive/c/Users/fritz. Win- dows ist case-insensitiv, also k¨onnenSie auch angeben c:\userS\FrITZ. Linux ist prinzipiell case-sensitiv; hier ist nur die eine korrekte Schreibweise erlaubt. Windows ¨ubersetzt die Ver- zeichnisnamen in Fremdsprachen (vom englischen aus betrachtet!), also heißt Ihr Windows- Home bei einem deutsch eingestellten System vielleicht c:\benutzer\fritz. Da auf der Festplatte nur der Name Users steht, darf die deutsche (oder anderssprachige) Version im cygwin-Fenster nicht verwendet werden.

1 Es ist sehr ung¨unstigund gegen jede Vernunft, alles unter einem Account mit Administratorberechti- gung durchzuf¨uhren 1.8. Festplattensituation nach Installation von cygwin 6

Linux-Home und Windows-Home: c:\cygwin64\home\fritz\ und c:\Users\fritz /home/fritz und /cygdrive/c/Users/fritz

2. clang

2.1. CIP-Pools und Linux Der Compiler ist in allen CIP-Pools unter Windows/cygwin installiert. Von den Linux-Systemen ist clang derzeit nur auf den Rechnern rz411, rz412 und athene verf¨ugbar.

2.2. Optionen Die meisten Optionen des gcc k¨onnenauch mit clang verwendet werden. Weitere Optionen sind: clang -Wall dateiname.c Ubersetzung¨ mit Ausgabe der meisten Warnungen clang -Weverything dateiname.c Ubersetzung¨ mit Ausgabe wirklich aller Warnungen

3. lcc lcc (genauer lcc-win32) ist ein C-Compiler f¨urWindows von Jacob Navia. Er entstand aus einem Vorl¨aufervon Dave Hanson und Chris Fraser mit dem Namen ,,A portable C compiler“. Er wird auf den Webseite http://www.cs.virginia.edu/~lcc-win32/ vorgestellt und steht dort auch (nach einigen Klicks) bereit. Eine weitere Webseite mit Beispielprogrammen stammt von John Findlay: http://www.johnfindlay.plus.com/lcc-win32/index.html

3.1. Installation Die eigentliche Downloadseite ist http://www.q-software-solutions.de/downloaders/show_download_locations von wo man sich die f¨unfDateien holen kann: lccwin32.exe manual.exe README.htm tutorial.zip advanced.zip Der Compiler wird durch Start des Installationsprogramms lccwin32.exe installiert. Die Windowshilfe installiert sich analog mit manual.exe. Die readme-Datei enth¨altaktuelle Informationen und kann auch direkt im Web gelesen werden. Les- und druckbare Handb¨ucher m¨ussenaus den .zip-Dateien extrahiert werden, z.B. mit dem schon unter Gnu-C erw¨ahnten unzip32.exe: c:\djgpp\unzip32.exe tutorial.zip 3.1. Installation 7 c:\djgpp\unzip32.exe advanced.zip Es werden zwei .pdf-Dateien mit knapp 400 Seiten, bez. 62 Seiten und den Titeln Programming with lcc-win32 Advanced programming with lcc-win32 erstellt.

3.2. Benutzung lcc kann von der Kommandozeile und als Entwicklungsumgebung gestartet werden.

3.2.1. Kommandozeile Es gen¨ugt,den korrekten Pfad einzustellen und die wichtigsten Optionen zu kennen: path c:\lcc\bin;%path% Pfad des Compilers lcc Start und Ausgabe aller Optionen lcc datei.c Ubersetzen¨ der Datei datei.c lcclnk datei.obj Montieren der Datei datei.obj datei Starten des Programms datei lcc -A datei.c Alle Warnungen anzeigen lcc -ansic datei.c Keine lcc-Spracherweiterungen lcc -pedantic datei.c Strengstes Ansi-C lcc -check datei.c Nur Syntaxpr¨ufung lcc -E datei.c nur Pr¨aprozessor lcc -errout=fehler datei.c Fehlermeldungen nach fehler lcc -I pfad datei.c Weitere Includepfade lcc -O datei.c Optimierung lcc -o program datei.c Programm nach program.obj lcc -overflowcheck datei.c Programmabbruch bei Uberl¨aufen¨ lcc -profile datei.c Laufzeitmessungen lcc -S datei.c Assemblerprogramm erzeugen lcc -v datei.c Version lcc -z datei.c Intermediate Code lcclnk -o program datei.obj Programm nach program.exe lcclnk -errout fehler datei.obj Fehlermeldungen nach fehler lcclnk -subsystem x datei.obj x = Console oder Windows lcclnk datei.obj lcclnk datei.obj lcclnk datei.obj lcclnk datei.obj lcclnk datei.obj 3.2.2. Entwicklungsumgebung 8

3.2.2. Entwicklungsumgebung

4. Pelles C

Pelles C ist ein C-Compiler f¨urWindows von Pelle Orinius. Er wird auf den Webseite http://www.christian-heffner.de/index.php vorgestellt und steht dort auch (nach einigen Klicks) bereit. Eine weitere Webseite mit Beispielprogrammen stammt von John Findlay: http://www.johnfindlay.plus.com/pellesc/index.html

4.1. Installation Nach Klick der Downloadseite findet man unter Download die Datei setup.exe, die man holt speichert und startet.

5. Alternativen

5.1. Ubersicht¨ Eine Ubersicht¨ bietet die Webseite http://www.thefreecountry.com/compilers/cpp.shtml

5.2. Kostenfreie und Freie Compiler Microsoft Visual C++ Watcom Tiny C PCC

5.3. Kommerzielle Compiler Portland Group PG Intel icc

6. Integrierte Entwicklungsumgebungen Ohne ausf¨uhrliche Beschreibung sei auf kostenlose Entwicklungsumgebungen (integrated development environment, IDE) hingewiesen: Eclipse: http://www.eclipse.org/ CodeBlocks http://www.codeblocks.org/ Bloodshed Dev-C: http://www.bloodshed.net/devcpp.html NetBeans: http://netbeans.org/ Sie erlauben das Edieren, Compilieren und Starten von Programmen und Projekten in einer Fensterumgebung. 7. jedit 9

7. jedit

7.1. Universit¨atRegensburg Der Editor jedit ist ¨uberall verf¨ugbar.

7.2. Installation Installation unter Download von der Seite http://www.jedit.org/ Linux-Distributionen enthalten jedit oft in ihren packages.

7.3. Bedienung (nur wichtige Elemente)

7.3.1. Grundbedienung Die Bedienung erfolgt wie bei jedem anderen mausgesteuerten Fensterprogramm. Insbesondere k¨onnennat¨urlich Dateien ge¨offnet,gespeichert, geschlossen und gedruckt wer- den; es kann eine neue Datei angelegt werden. Falls mehrere Dateien offen sind, kann zwischen ihnen durch Klick in der Zeile mit dem Dateinamen und -ort oberhalb des Text- fensters umgeschaltet werden. Ist eine Datei mit falscher Zeichencodierung geladen (Datei erscheint verst¨ummelt),kann sie mit Angabe der richtigen Zeichencodierung neu geladen werden: Men¨u:Datei/Erneut Laden mit Zeichencodierung. Hier k¨onnenSie unter Hunderten von verschiedenen Codierungen w¨ahlen. Damit kann wahrscheinlich jede Datei ge¨offnetwerden.

7.3.2. Zeichensatz, Codes und encodings Einstellen oder Andern¨ der Zeichencodierung: Men¨u:Extras/Datei-Optionen/Zeichencodierung (am besten UTF-8) Vorsicht: Andern¨ der Zeichencodierung ¨andertdie Datei, auch wenn der Inhalt (scheinbar) gleich bleibt. Die Datei muss erneut gespeichert werden! Im selben Men¨ukann die gew¨unschte Zeilenendemarkierung gew¨ahltwerden. Normalerweise besteht keine Veranlassung, die Betriebssystemvoreinstellung zu ¨andern.

8. lint und splint lint ist ein Unix-Programm, das C-Programme auf Unsauberheiten ¨uberpr¨ufenkann. Eine Variante ist splint, das im CIP-Pool in cygwin bereitsteht. splint kann in cygwin mit setup (devel) installiert werden. splint kann in Debian mit ,,apt-get install splint“ installiert werden. splint ist von seiner Homepage installierbar. 8. lint und splint 10

Inhaltsverzeichnis 1. GNU-C ...... 1 3.2.2. Entwicklungsumgebung . 8 1.1. Aktivieren und Starten von Cygwin im CIP-Pool . . . 1 4. Pelles C ...... 8 1.2. Aktivieren und Starten von 4.1. Installation ...... 8 MinGW im CIP-Pool . . . 1 1.3. Start des Compilers . . . . 2 5. Alternativen ...... 8 1.4. Starten von ¨ubersetzten ¨ gcc-Programmen unter 5.1. Ubersicht ...... 8 Windows ...... 3 5.2. Kostenfreie und Freie 1.5. Bemerkungen zu Linux . . 4 Compiler ...... 8 1.6. Installation vom Cygwin auf 5.3. Kommerzielle Compiler . . 8 dem eigenen Rechner . . . 4 1.7. Installation vom MinGWin 6. Integrierte Entwicklungsumge- auf dem eigenen Rech- bungen ...... 8 ner ...... 4 7. jedit ...... 9 1.8. Festplattensituation nach Installation von cygwin . . 5 7.1. Universit¨atRegensburg . . 9 7.2. Installation ...... 9 2. clang ...... 6 7.3. Bedienung (nur wichtige 2.1. CIP-Pools und Linux . . . 6 Elemente) ...... 9 2.2. Optionen ...... 6 7.3.1. Grundbedienung . . 9 7.3.2. Zeichensatz, Codes und 3. lcc ...... 6 encodings . . . . . 9 3.1. Installation ...... 6 3.2. Benutzung ...... 7 8. lint und splint ...... 9 3.2.1. Kommandozeile . . . 7