Bedienung der C-Compiler - Uni Regensburg
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
25. April 2018 C:\Users\brf09510\svn\doku\trunk\compman\SC-COMP.TEX Bedienung der C-Compiler 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ür Unix-Umgebungen konzipiert. Für PCs unter Windows steht er in den zwei Versionen MinGW und Cygwin zur Verfügung. 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ührenden Namen gcc) bereit. Die Bedienungshandbücher finden sich im Internet unter http://gcc.gnu.org/onlinedocs/ Eine Übersicht über 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-bash-shell gestartet werden. Das geschieht in einem Windows-Kommandofenster (cmd.exe). cygwin Aktivieren des Compilers F:\BAT\cygwin.cmd wenn es mal nicht geht cd /cygdrive/c Wechseln auf (z.B.) Laufwerk C: gcc -std=c99 -pedantic -Wall -o bsp bsp.c Standard-C-Übersetzung Damit stehen zwei C-Compiler (gcc, clang), zwei C++-Compiler (g++, clang++) und ein Fortran-Compiler (gfortran) zur Verfügung. 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ügung. Mit k:\RZ\KURSE\BRAUN\dislin\dl.bat erhalten Sie zusätzlich 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ür die Steuerung der Übersetzung steht eine Vielzahl weiterer Optionen zur Verfügung. Die Übersetzung 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 Übersetzung der angegebenen Datei mit C-Quelle nach a.exe gcc -o dateiname dateiname.c Übersetzung der angegebenen Datei mit C-Quelle nach dateiname.exe Der C++-Compiler kann mit demselben Kommando gestartet werden, dann müssen jedoch alle C++-Bibliotheken explizit angegeben werden. Einfacher ist der Start mit g++: g++ dateiname.cxx Übersetzung der angegebenen Datei mit C++-Quelle nach a.exe g++ -o dateiname dateiname.cpp Übersetzung der angegebenen Datei mit C++-Quelle Elementare Varianten des Übersetzungskommandos sind (diese Varianten können kombi- niert werden. Die Optionen pedantic, Wall und ansi sollten immer verwendet werden): gcc -x c dateiname.c Übersetzung der angegebenen C-Datei (Sprachangabe) gcc -c dateiname.c Übersetzung ohne Montage gcc -S dateiname.c Übersetzung ohne Assemblierung (Nachassemblierung as dateiname.s) gcc -E dateiname.c nur Präprozessor (Dateiausgabe mit >) gcc -I VZ dateiname.c Übersetzung mit weiteren include-Dateien im Verzeichnis VZ gcc -v dateiname.c ,,verbose“ Übersetzung mit viel Hintergrundinformation gcc -traditional dateiname.c abgeschaltet seit 2.95 gcc -ansi dateiname.c Übersetzung nach dem ANSI-C-Standard (C88) gcc -std=c11 dateiname.c Übersetzung 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 Übersetzung mit schärferer Überprüfung gcc -pedantic-errors dateiname.c Pedantische Fehler statt pedantischer Warnungen gcc -Wall dateiname.c Übersetzung mit Ausgabe aller Warnungen gcc -O2 dateiname.c Übersetzung mit Optimierung 2; Weitere Werte: Os O1 O2 O3 gcc dateiname.c -s Übersetzung 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ührliche Beschreibungen können im 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 Übersetzung 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ärenden Tastaturbefehlen, Informationen über den Com- piler an den Bildschirm zu holen. Es wird mit q (quit) wieder verlassen. info Informationen über GNU Die Größe der 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üssen die 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 übersetzten gcc-Programmen unter Windows Bei cygwin und MinGW liegen die übersetzten Programme als ausführbare Windows- Dateien (.exe) vor. MinGW-Übersetzungen können jederzeit in einem cmd-Fenster gest- artet werden. Bei cygwin existiert derzeit keine Möglichkeit und (soweit mir bekannt) kein
1.4. Starten von übersetzten gcc-Programmen unter Windows 4 Trick, die Übersetzungen 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önnen entfallen, 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üher mögliche 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üchteweise (ich habe es nicht ausprobiert!) sogar schneller compiliert. 1.5. Bemerkungen zu Linux Werden in Linux die Funktionen aus benötigt, müssen sie 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ür 32-bit-Inst. setup-x86_64.exe Installationsprogramm für 64-bit-Inst. 1.7. Installation vom MinGWin auf dem eigenen Rechner http://www.mingw.org/ Homepage Minimalist GNU for Wind 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ählen. mingw-get-setup.exe Installationsprogramm Das Installationsprogramm wird als Administrator gestartet und installiert seinerseits den MinGW Installation Manager. Im danach geöffneten Fenster klickt man im Basic Setup das Paket mingw32-base (mark for installation) und eventuell weitere Pakete (mingw32- gccfortran, mingw32-gccg++). Im Menübefehl Installation/Apply Changes wird die In- stallation dann gestartet. Wurde etwas vergessen oder will man plötzlich 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ügbar. 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 öffnen: \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ällen einfach Ihr Vorname ist. Ich verwende dafür ”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 üblichen Linux-Verzeichnisse bin, dev, etc, home, lib, sbin, tmp, usr und var. Das heißt, dass Sie hier über ein weiteres (Linux-)Homeverzeichnis verfügen, in dem jeder angemeldete User Ihres Rechners ein Unterverzeichnis mit seinem Namen erhält, 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ührlich /home/fritz. Hier sehen Sie schon zwei Bezeichnungen für dasselbe 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änglich 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önnen Sie weiter in die Tiefe gehen, so dass auch alle Windows-Dateien verfügbar sind. So heißt Ihr Windows-Homeverzeichnis im cygwin-Fenster jetzt /cygdrive/c/Users/fritz. Win- dows ist case-insensitiv, also können Sie auch angeben c:\userS\FrITZ. Linux ist prinzipiell case-sensitiv; hier ist nur die eine korrekte Schreibweise erlaubt. Windows übersetzt 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ünstig und gegen jede Vernunft, alles unter einem Account mit Administratorberechti- gung durchzuführen
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ügbar. 2.2. Optionen Die meisten Optionen des gcc können auch mit clang verwendet werden. Weitere Optionen sind: clang -Wall dateiname.c Übersetzung mit Ausgabe der meisten Warnungen clang -Weverything dateiname.c Übersetzung mit Ausgabe wirklich aller Warnungen 3. lcc lcc (genauer lcc-win32) ist ein C-Compiler für Windows von Jacob Navia. Er entstand aus einem Vorläufer von 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ünf Dateien 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ält aktuelle Informationen und kann auch direkt im Web gelesen werden. Les- und druckbare Handbücher müssen aus den .zip-Dateien extrahiert werden, z.B. mit dem schon unter Gnu-C erwähnten 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ügt, 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 Übersetzen 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üfung lcc -E datei.c nur Präprozessor 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 Überläufen 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ür Windows 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. Übersicht Eine Übersicht 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ührliche 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ät Regensburg Der Editor jedit ist überall verfügbar. 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önnen natürlich Dateien geöffnet, 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ümmelt), kann sie mit Angabe der richtigen Zeichencodierung neu geladen werden: Menü: Datei/Erneut Laden mit Zeichencodierung. Hier können Sie unter Hunderten von verschiedenen Codierungen wählen. Damit kann wahrscheinlich jede Datei geöffnet werden. 7.3.2. Zeichensatz, Codes und encodings Einstellen oder Ändern der Zeichencodierung: Menü: Extras/Datei-Optionen/Zeichencodierung (am besten UTF-8) Vorsicht: Ändern der Zeichencodierung ändert die Datei, auch wenn der Inhalt (scheinbar) gleich bleibt. Die Datei muss erneut gespeichert werden! Im selben Menü kann die gewünschte Zeilenendemarkierung gewählt werden. Normalerweise besteht keine Veranlassung, die Betriebssystemvoreinstellung zu ändern. 8. lint und splint lint ist ein Unix-Programm, das C-Programme auf Unsauberheiten überprüfen kann. 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 übersetzten gcc-Programmen unter 5.1. Übersicht . . . . . . . . 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ät Regensburg . . 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
Sie können auch lesen