Gnu-C-Compiler
Total Page:16
File Type:pdf, Size:1020Kb
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¨urUnix-Umgebungen konzipiert. F¨urPCs unter Windows steht er in den zwei Versionen MinGW und Cygwin 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-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-Ubersetzung¨ Damit stehen zwei C-Compiler (gcc, clang), zwei C++-Compiler (g++, clang++) und ein Fortran-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 <math.h> 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.