Programmiersprache C/C++

Compiler-Optionen

An Hand einiger Programmiersysteme soll gezeigt werden, welche Möglichkeit es zur Steuerung der Arbeit von Präprozessor, Compiler und Verbinder (Linker) gibt.

Siehe auch:
Überblick über die wichtigsten Optionen

Microsoft

Microsoft (R) C Optimizing Compiler Version 6.00A
Copyright (c) Microsoft Corp 1984-1990. All rights reserved.

usage: cl [ option... ] filename... [ -link linkoption... ]

                          C COMPILER OPTIONS

                            -MEMORY MODEL-
/AS small model (default)               /AC compact model
/AM medium model                        /AL large model
/AH huge model                          /AT tiny model (.COM files)

                            -OPTIMIZATION-
/O enable optimization (same as /Ot)    /Oa ignore aliasing
/Od disable optimizations               /Oe enable registers allocations
/Og enable global optimization          /Oi enable intrinsic functions
/Ol enable loop optimizations           /On disable "unsafe" optimizations
/Op enable precision optimizations      /Or disable in_line return
/Os optimize for space                  /Ot optimize for speed (default)
/Ow assume aliasing in function calls   /Ox max. optimization (/Oegilt /Gs)

                          -CODE GENERATION-
/G0 8086 instructions (default)         /G1  186 instructions
/G2  286 instructions                   /Gm put strings in constant segment
/Gc Pascal style function calls         /Gr _fastcall type calls
/Gs no stack checking                   /Gt[number] data size threshold
/Gw Windows entry sequence

                            -OUTPUT FILES-
/Fa[assembly listing file]              /Fb[bound executable file]
/Fc[mixed source/object listing file]   /Fe
  (press  to continue)
/Fl[object listing file]                /Fm[map file]
/Fo                        /Fr[source browser info file]
/FR[extended source browser info file]  /Fs[source listing file]

                            -PREPROCESSOR-
/C don't strip comments                 /D[=text] define macro
/E preprocess to stdout                 /EP same as /E but no #line
/I add #include path              /P preprocess to file
/U remove predefined macro        /u remove all predefined macros
/X ignore "standard places"

                              -LANGUAGE-
/Za disable extensions                  /Zd line number information
/Ze enable extensions (default)         /Zg generate declarations
/Zi symbolic debugging information      /Zl remove default library info
/Zp[n] pack structs on n-byte boundary  /Zs syntax check only

                           -FLOATING POINT-
/FPa calls with altmath                 /FPc calls with emulator
/FPc87 calls with 8087 library          /FPi inline with emulator (default)
/FPi87 inline with 8087

                           -SOURCE LISTING-
/Sl<columns> set line width             /Sp<lines> set page length
/St<string> set title string            /Ss<string> set subtitle string

                           -MISCELLANEOUS-
/B[123]<pass> to invoke different C[123]/c compile only, no link
/H<number> external name length         /J default char type is unsigned
/qc use quick compile feature           /Tc<file> compile file without .c
/V<string> set version string           /W<number> warning level

                            -MASM SUPPORT-
/MA<MASM switch>                        /Ta<file> assemble file without .asm
/Fx[MASM's cross-reference file]

                              -LINKING-
/F <hex_number> stack size (hex. bytes) /Lc link compatibility mode executable
/Lr link compatibility mode executable  /Lp link protect mode executable
/link [linker_options_and_libraries]    /ML link C runtime as part of DLL
/MD use C runtime as DLL                /MT support multi-thread


Bemerkung: 
Anstelle des unter DOS üblichen / zur Kennzeichnung von Optionen kann wahlweise auch das unter Unix übliche - verwendet werden.


Symantec

SC is a one-step program to compile and link C++, C and ASM files.

Usage ([] means optional):
        SC file... [flags...] [@file]

file...   .CPP, .C or .ASM source, .OBJ object or .LIB library file name[s]
@file...  pick up arguments from file or environment
flags...  zero or more of the following:

-a[1|2|4|8] alignment of struct members -A  strict ANSI C/C++
-b[r|x] use 286|386 DOS extender passes -c  skip the link, do compile only
-cpp  assume source files are C++       -C  no inline expansion
-cod  Generate .cod (.asm) file         -D[macro[=text]]  define macro
-e  show results of preprocessor        -f  IEEE 754 inline 8087 code
-ff fast inline 8087 code               -g  put full debug info in .OBJ file
-g3 CV3 symbol format                   -gd dynamic C++ type info only
-gf disable debug info optimization     -gg make static functions global
-gh symbol info for globals             -gl line numbers only
-gs symbol info only                    -gt generate trace prolog/epilog
-H  use precompiled headers (ph)        -HDdirectory  use ph from directory
-HF[filename]  generate ph to filename  -HIfilename   #include filename
-HO include files only once             -HX automatic precompiled headers
-Ipath  #include file search path       -j[0|1|2]  Asian language characters
    0: Japanese (default) 1: Taiwanese and Chinese 2: Korean
-Masm   specify assembler to use        -M/switch  pass /switch to assembler
-m[tsmclvfnrpxz][do][w][u] memory model
    s: small code and data (default)    m: large code, small data
    c: small code, large data           l: large code and data
    v: VCM                              r: Rational 16 bit DOS Extender
    p: Pharlap 32 bit DOS Extender      x: DOSX 32 bit DOS Extender
    z: ZPM 16 bit DOS Extender          f: OS/2 2.0 32 bit
    t: .COM file                        n: Windows NT 32 bit
    d: DOS 16 bit (default)             o: OS2 16 bit
    w: SS != DS                         u: reload DS
-NC don't use COMDATs                   -NL no default library
-NS new code seg for each function      -NTname  set code segment name
-NV vtables in far data
-o[-+flag]  run optimizer with flag     -ooutput  output filename (.ext opt)
-p  turn off autoprototyping            -P  default to pascal linkage
-r  strict prototyping                  -R  put switch tables in code seg
-s  stack overflow checking             -S  always gen stack frame
-u  suppress predefined macros          -v[0|1|2] verbose compile
-w[n]  suppress warnings, n is msg num  -wx  warnings are errors
-W{0123ADadefmrstuvwx-+}  Windows prolog/epilog
    1: Full 2: Reduced 3: Smart callback A: EXE D: DLL
-x  turn off error maximum              -XIspec  instantiate template
=nnnn  set stack size for Sxxx          -[0|2|3|4|5]  88/286/386/486/P5 code
Symantec Preprocessor Version 6.11
Copyright (C) Symantec Corporation 1984-1993.  All Rights Reserved.

Use:
        SPP input [-ooutput] {-D[macro[=text]]}
            [-m(smclv)] {-(AjJuvwx)} {-Ipath}

input   source file name
-A  strict ANSI (no extended keywords)  -D  define macro
-I  #include path search path           -j  Asian language characters
-J  chars default to unsigned
-ms  small code, small data (default)   -mm  large code, small data
-mc  small code, large data             -ml  large code, large data
-mv  vcm model
-o  output file name (.i)
-u  suppress predefined macros          -v  verbose compile
-w[n]  suppress warning n               -x  turn off error maximum

Symantec Segmented Executable Linker Version 6.01a23
Copyright (C) Symantec Corporation 1985-1993.  All rights Reserved.

Usage:
 LINK386 objects, exe, map, libraries, def [, res] [switches...] ;

 objects        object files separated with +'s
 exe            name for the resulting EXE file
 map            name for the MAP file
 libraries      library files and directories separated with +'s
 def            name of the DEF file
 res            name of the resource file

Object and Library files are searched for in the current directory, in the
specified directories, and then along the OBJECTS and LIB environment paths.

For an explanation of the switches and DEF file syntax that are valid
when producing a particular type of executable file, use:
 /HELPDOS       for DOS and DOSX executables
 /HELPWINDOWS   for Windows 3.x executables
 /HELPNT        for Windows NT executables

IBM AIX XL C Compiler/6000

  Verwendung:
     cc   [ Angabe | Datei ]...
     xlc  [ Angabe | Datei ]...
     c89  [ Angabe | Datei ]...

  Beschreibung:
     Die Befehle cc, xlc und c89 wandeln XL C-Quellendateien um. Diese 
     Befehle unterscheiden sich nur in ihrer Standardsprachebene
     voneinander. Bei cc ist die Standardsprachebene "erweitert", bei
     xlc und c89 jeweils "ansi". Diese Befehle verarbeiten auch
     Quellen- und Objektdateien aus Assembler. Wenn die Option -c
     nicht angegeben wird, geben diese Befehle einen Aufruf an den
     Linkage Editor zur Erstellung einer einzelnen Objektdatei.
     Mögliche Eingabedateien sind:
       1. Dateiname mit Suffix .c: C-Quellendatei
       2. Dateiname mit Suffix .i: vorverarbeitete C-Quellendatei
       3. Dateiname mit Suffix .o: Objektdatei für den Befehl ld
       4. Dateiname mit Suffix .s: Assembler-Quellendatei


  Angaben:
     Eine oder mehrere der folgenden Angaben sind möglich:

       1. Optionsangaben:

        -#        Zeigt ausführliche Informationen über
                  den Stand der Verarbeitung durch den
                  Compiler an, ohne etwas aufzurufen.
        -B<Präfix>
                  Konstruiert alternative Programmnamen für den
                  Compiler/Assembler/Linkage Editor.
                  <Präfix> wird am Anfang der standardmäßigen
                  Programmnamen eingefügt.
        -c        Nur umwandeln; ld wird nicht aufgerufen.
        -C        Schreiben von auszugebenden Kommentaren,
                  während die Vorverarbeitung läuft. Wird
                  zusammen mit -E und -P verwendet.
        -D<Name>[=<Def>]
                  Definiert <Name> wie in der Anweisung #define.
                  Wird <Def> nicht angegeben, wird 1 angenommen.
        -E        Vorverarbeitung ohne Umwandlung; Ausgabe
                  geht an stdout
        -F<x>[:<Zeilengruppe>]
                  Alternative Konfigurationsdatei <x> mit
                  wahlfreier <Zeilengruppe>. Wird <Zeilengruppe>
                  nicht angegeben, wird xlc angenommen.
        -g        Erstellen von Testhilfeinformationen.
        -I<Verz>  Im Verzeichnis <Verz> nach Einfügedateien
                  suchen, die nicht mit einem absoluten
                  Pfad beginnen.
        -l<Schlüssel> Angegebene Bibliotheksdatei
                  durchsuchen. Dabei wählt <Schlüssel>
                  die Datei lib<Schlüssel>.a aus.
        -L<Verz>  Sucht im Verzeichnis <Verz> nach
                  Dateien, die mit -l<Schlüssel>
                  angegeben wurden.
        -o<Name>  Benennt die ausführbare Datei 
                  <Name> anstelle von a.out.
        -O        Optimiert den generierten Code.
        -p        Generiert einfachen Profilunterstützungscode.
        -pg       Generiert Profilunterstützungscode. Bietet
                  ausführlichere Profildaten als -p.
        -P        Vorverarbeitung ohne Umwandlung; Ausgabe geht
                  an die .i-Datei
        -Q        Inline-Ersetzung aller entsprechenden Funktionen.
        -t<x>     Präfix aus der Option -B für das angegebene Programm <x>,
                  verwenden; dabei gibt es für x folgende Möglichkeiten:
                    c = Compiler
                    a = Assembler
                    l = Linkage Editor.
        -U<Name>  Aufheben der Definition von Name aus der Anweisung #undef.
        -v        Anzeigen ausführlicher Informationen über den
                  Stand der Ausführungs durch den Compiler.
        -w        Unterdrücken reiner Informationsnachrichten,
                  sprachebenenbezogener Nachrichten und Achtung-Nachrichten.
        -y<x>     Angabe zum Auf-/Abrunden konstanter Gleitkommaausdrücke
                  zur Umwandlungszeit, wobei <x> für eine der 
                  folgenden Angaben steht:
                    n = Runden auf den nächsten Wert
                    m = Runden gegen minus unendlich
                    p = Runden gegen plus unendlich
                    z = Runden gegen Null.

       2. Andere Angaben:

          Andere Angaben werden wie folgt angegeben:

          -q<Angabe>

            dabei ist <Angabe> ein Ein-/Aus-Schalter in der Weise, daß z. B.
            bei Angabe x mit -qx die Angabe aktiviert und mit
            -qnox inaktiviert wird. -qsource weist z. B. den Compiler
            an, eine Quellenliste zu erstellen, bei -qnosource wird
            dagegen keine Quellenliste erstellt.

            Mit folgenden Angaben werden die Ausgangswerte des
            Compilers überschrieben:

            attr        Erstellen einer Attributliste (nur
                        (Namen, zu denen Verweise vorliegen).
            dbcs        Zeichenkettenliterale und Kommentare
                        können Doppelbyte-Zeichen enthalten.
            extchk      Ausführen von Prüfungen externer Namen und
                        von Funktionsaufrufen.
            list        Erstellen einer Objektliste.
            listopt     Druckvorgaben aller Angaben in der Liste.
            nofold      Unterdrücken der Auswertund konstanter
                        Gleitkommaausdrücke zur Umwandlungszeit.
            nomaf       Unterdrücken der Generierung von 
                        Multiplikations-/Additionsinstruktionen.
            noprint     Leiten der Liste an /dev/null.
            noro        Keine Zeichenkettenliterale werden in den
                        Nur-Lese-Bereich gestellt.
            phsinfo     Phaseninformationen werden am Bildschirm angezeigt.
            rndsngl     Strikte Einhaltung des IEEE-Standards, d. h.
                        alle Operationen an Werten einfacher Genauigkeit
                        produzieren auch Resultate mit einfacher
                        Genauigkeit.
            rrm         Angeben des Auf-/Abrundungsmodus zur
                        Ausführungszeit. Umwandlung mit dieser Angabe
                        Angabe ausführen, wenn der Rundungsmodus zur
                        Ausführungszeit gegen minus unendlich, gegen
                        plus unendlich oder nicht bekannt ist.
            source      Erstellen einer Quellenliste.
            stat        Angabe, daß statistische Werte über zeitlichen
                        Ablauf und Tabellengröße in der Liste enthalten
                        sein sollen.
            xref        Erstellen einer Querverweisliste (nur
                        (bei Namen, zu denen Verweise vorliegen).

          -q<Option>=<Unteroption>
          -q<Option>=<Unteroption1>:<Unteroption2>:...:<UnteroptionN>

            dabei wird <Option> ein oder mehrere bestimmte
            Unteroptionswerte wie folgt zugeordnet:

            attr=full   Erstellen einer Attributliste
                        (alle Namen, mit und ohne Verweise).
            chars=signed
                        Das Datentypzeichen erhält ein Vorzeichen.
            flag=<Grad1>:<Grad2>
                        Gibt den Schweregrad der in der Liste <sev1> und
                        am Bildschirm <sev2> zu meldenden
                        Diagnosenachrichten an.
            halt=<Grad> Stoppen des Compilers nach der ersten Phase, wenn
                        Fehler festgestellt werden, die mindestens den
                        Schweregrad <Grad> aufweisen.
            langlvl=<Sprachebene>
                        Angabe der Spachebene, die bei der Umwandlung
                        verwendet werden soll. Für <Sprachebene> kann
                        ansi, saal2, saa oder erweitert (extended)
                        angegeben werden.
            pgmsize=<p>
                        Setzen der anfänglichen, vom Compiler zu
                        verwendenden Tabellengröße. Mögliche
                        Angaben für <p> sind s für small (klein)
                        und l für groß (large).
            spill=<Größe>
                        Angabe der Größe des Reservebereichs für
                        die Registerzuordnung.
            xref=full   Erstellen einer Querverweisliste
                        (alle Namen unabhängig davon, ob auf
                        sie verwiesen wird oder nicht).
Hinweise zu einigen wichigen Optionen des Compilers


Gnu C, Unix-Version

Gnu C/C++


Zurück zum Menü
Zurück zur vorigen Seite Weiter zur nächsten Seite

P. Böhme, 17.03.1996