Table 15-1 compares the SunOS release 4.x Sun C and ANSI C compilers to the Solaris 2.6 Sun WorkShop(TM) C++ 4.2. It is provided for your information, and is not intended to describe the range of operations available in default Solaris 2.6 software.
Table 15-1 presents information based on the publicly available copies of the American National Standard for Information Systems - Programming Language XX3.159-1989, approved December 14, 1989.
Please note the following:
A "yes" in any column indicates that the option is supported by that compiler.
If the option has changed, the new option is listed.
A "no" in any column means the option is not supported by that driver
A "+" in the Sun WorkShop(TM) C++ 4.2 Solaris 2.6 column indicates an option required by SVID specifications.
Option or Flag |
Sun C |
ANSI C |
Sun WorkShop(TM) C++ 4.2 |
Description |
---|---|---|---|---|
-A symbol |
No |
Yes |
Yes |
cpp predicate assertion |
-a |
Yes |
Yes |
-xa |
Counts # basic block executions |
-align |
Yes |
Yes |
No |
Page aligns (ld) |
-assertx |
Yes |
Yes |
-z |
Specifies link-time assertion |
-BX |
Yes |
Yes |
Yes |
Specifies binding type (only for libraries in SunOS release 5.6) |
-bnzero |
Yes |
Yes |
No |
Generates nonzero AR |
-C |
Yes |
Yes |
No |
cpp comments left in |
-c |
Yes |
Yes |
+Yes |
Produces .o file |
-cg87 |
Yes |
Yes |
No |
Sets fp option to -cg87 |
-cg89 |
Yes |
Yes |
Yes |
Sets fp option to -cg89 |
-dryrun |
Yes |
Yes |
Yes |
Shows commands constructed by driver |
-Dx |
Yes |
Yes |
+Yes |
Defines cpp symbol x |
-d |
Yes |
Yes |
No |
Forces definition of common (ld) |
-dalign |
Yes |
Yes |
Yes |
Assumes doubles are double-word aligned |
-dl |
Yes |
Yes |
No |
Generates long data segment refs |
-d[y|n] | -BX | -BX |
Yes |
Dynamic linking [yes|no] |
-E |
Yes |
Yes |
+Yes |
Runs source through cpp |
-e |
No |
No |
No |
Entry point for ld |
-F |
-O* |
-O* |
+No |
Optimization directives |
-f |
No |
No |
No |
Floating-point support |
-fast |
Yes |
Yes |
Yes |
Options for best performance |
-fsingle |
Yes |
No |
No |
Floats are single precision |
-fsingle2 |
Yes |
No |
No |
Passes float (as float not double) |
-fnonstd |
Yes |
Yes |
Yes |
Non-standard float option |
-fstore |
Yes |
No |
Yes |
Forces writes on store |
-G |
No |
No |
Yes |
Creates shared library, not available with the -dn option |
-g |
Yes |
Yes |
+Yes |
Generates info for dbx |
-go |
Yes |
No |
No |
Generates info for adb |
-H |
Yes |
Yes |
Yes |
Prints paths of included files |
-h name |
No |
No |
Yes |
Uses name as internal identifier; soname passed to linker |
-help |
Yes |
Yes |
-flags |
Lists options |
-Ix |
Yes |
Yes |
+Yes |
Adds x to include path |
-J |
sun3 |
No |
No |
Generates long offset for switch|case |
-KPIC |
-PIC |
-PIC |
Yes |
Position independent code |
-Kpic |
-pic |
-pic |
Yes |
PIC with short offsets |
-Kminabi |
No |
No |
No |
ABI compliant code |
-libmil |
Yes |
Yes |
-xlibmil |
Passes libm.il as part of -fast |
-lx |
Yes |
Yes |
Yes |
Reads object library (for ld) |
-Lx |
Yes |
Yes |
Yes |
Adds x to ld library path |
-M |
Yes |
Yes |
No |
Collects dependencies |
-M mapfile |
Yes |
No |
No |
Passes mapfile to the linker |
-misalign |
Yes |
Yes |
Yes |
Handles misaligned Sun-4 data |
-N |
Yes |
No |
No |
Does not make shared |
-n |
Yes |
No |
No |
Makes shared |
-native |
Yes |
Yes |
Yes |
Uses appropriate -cg option |
-noc2 |
Yes |
Yes |
No |
Doesn't do peephole optimization |
-nolibmil |
Yes |
Yes |
-xnolibmil |
Doesn't pass libm.il with -fast |
-o file |
Yes |
Yes |
+Yes |
Sets name of output file |
-O[1,2,3,4] |
Yes |
Yes |
-x0[1,2,3,4] |
Generates optimized code |
-O |
Yes |
Yes |
+Yes |
Generates optimized code |
-P |
Yes |
Yes |
+Yes |
Runs source through cpp, output to .i |
-PIC |
Yes |
No |
-KPIC |
Generates pic code with long offset |
-p |
Yes |
Yes |
+Yes |
Collects data for prof |
-pg |
Yes |
Yes |
-xpg |
Collects data for gprof |
-pic |
Yes |
Yes |
-Kpic |
pic code with short offset |
-pipe |
Yes |
No |
No |
Uses pipes instead of temp files |
-purecross |
Yes |
No |
No |
Doesn't have slash in VROOT |
-Qdir x |
Yes |
Yes |
-Y* |
Looks for compiler passes in x |
-Qpath x |
Yes |
Yes |
-Y* |
Same as -Qdir |
-Qn |
No |
No |
Yes |
Doesn't add version stamp info |
-Qy |
No |
No |
Yes |
Adds version stamp info |
-qdir x |
Yes |
Yes |
No |
Looks for compiler passes in x |
-ql |
No |
No |
No |
Collects data for lprof |
-qp |
-p |
-p |
-p |
Collects data for prof |
-qpath x |
Yes |
Yes |
No |
Same as -Qdir |
-Qoption cpp x |
Yes |
Yes |
Yes |
Passes option x on to program cpp |
-Qoption iropt x |
Yes |
Yes |
Yes |
Passes option x on to program iropt |
-Qoption cg x |
Yes |
Yes |
Yes |
Passes option x on to program cg |
-Qoption inline x |
Yes |
Yes |
No |
Passes option x on to program inline |
-Qoption as x |
Yes |
Yes |
No |
Passes option x on to program as |
-Qoption asS x |
Yes |
Yes |
No |
Passes option x on to program asS |
-Qoption ld x |
Yes |
Yes |
Yes |
Passes option x on to program ld |
-qoption cpp x |
Yes |
Yes |
No |
Passes option x on to program cpp |
-qoption ccom x |
Yes |
Yes |
No |
Passes option x on to program ccom |
-qoption lintl x |
Yes |
Yes |
No |
Passes option x on to program lint1 |
-qoption iropt x |
Yes |
Yes |
Yes |
Passes option x on to program iropt |
-qoption cg x |
Yes |
Yes |
Yes |
Passes option x on to program cg |
-qoption inline x |
Yes |
Yes |
No |
Passes option x on to program inline |
-qoption cat x |
Yes |
Yes |
No |
Passes option x on to program cat |
-qoption c2 x |
Yes |
Yes |
No |
Passes option x on to program c2 |
-qoption as x |
Yes |
Yes |
No |
Passes option x on to program as |
-qoption asS x |
Yes |
Yes |
No |
Passes option x on to program asS |
-qoption ld x |
Yes |
Yes |
Yes |
Passes option x on to program ld |
-Qproduce .o |
Yes |
Yes |
Yes |
Produces type .o file (Object file) |
-Qproduce .s |
Yes |
Yes |
Yes |
Produces type .s file (Assembler source) |
-Qproduce .c |
Yes |
Yes |
No |
Produces type .c file (C source) |
-Qproduce .i |
Yes |
Yes |
Yes |
Produces type .i file (C source after cpp) |
-qproduce .o |
Yes |
Yes |
Yes |
Produces type .o file (Object file) |
-qproduce .s |
Yes |
Yes |
Yes |
Produces type .s file (Assembler source) |
-qproduce .c |
Yes |
Yes |
No |
Produces type .c file (C source) |
-qproduce .i |
Yes |
Yes |
Yes |
Produces type .i file (C source after cpp) |
-r |
Yes |
Yes |
No |
Makes relocatable; pass to linker |
-R |
Yes |
Yes |
No |
Merges data into text segment |
-R |
No |
No |
Yes |
Specifies search directories for the run-time linker |
-S |
Yes |
Yes |
+Yes |
Produces .s file only |
-s |
Yes |
Yes |
Yes |
Strips (4.1); pass to linker |
-sb |
Yes |
Yes |
-xsb |
Collects information for code browser |
-strconst |
No |
Yes |
No |
Places string literals in read-only text segment |
-sun2 |
Yes |
No |
No |
Generates code for a Sun-2(TM) system |
-sun3x |
Yes |
No |
No |
Generates code for a Sun-3x(TM) system |
-sun386 |
Yes |
No |
No |
Generates code for a Sun386i(TM) |
-sun3 |
Yes |
No |
No |
Generates code for a Sun-3 system |
-sun4c |
Yes |
No |
No |
Generates code for a Sun4c(TM) system |
-sun4 |
Yes |
No |
No |
Generates code for a Sun-4(TM) system |
-target |
Yes |
No |
-xtarget |
Sets target architecture to x |
-temp=dir |
Yes |
Yes |
Yes |
Set directory for temps to dir |
-time |
Yes |
Yes |
Yes |
Reports the execution times |
-u |
Yes |
Yes |
No |
Enters symbol arg as undef (ld) |
-Ux |
Yes |
Yes |
+Yes |
Undefines cpp symbol x |
-v |
Yes |
Yes |
Yes |
Verbose mode |
-v |
No |
No |
Yes |
Strict semantic checking |
-V |
Yes |
Yes |
+Yes |
Reports versions of programs |
-W |
No |
No |
No |
Arguments to other components |
-w |
Yes |
Yes |
Yes |
Does not print warnings |
-X[t,a,c,s] |
No |
Yes |
No |
Compatibility options |
-Y |
No |
No |
No |
Changes path name to components |
-yx |
Yes |
No |
No |
Traces symbol |
-z |
-assert |
-assert |
No |
Turns on asserts in linker |
-# |
-v |
-v |
No |
Verbose mode |
-EOF |
No |
No |
No |
File argument |
The C compiler accepts the types of file-name arguments shown in Table 15-2.
Table 15-2 File-name Extensions Used by the C Compiler
Suffix |
File Type |
---|---|
.a |
Object library |
.il |
In-line expansion file |
.o |
Object file |
.so |
Shared object |
.s |
Assembler source |
.S |
Assembler source for cpp |
.c |
C source |
.i |
C source after cpp |
"file.X=.Y" will read the file "file.X" but treat it as if it had suffix "Y"