diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/unix-v10/man1/gcc.1 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/unix-v10/man1/gcc.1')
| -rw-r--r-- | static/unix-v10/man1/gcc.1 | 641 |
1 files changed, 641 insertions, 0 deletions
diff --git a/static/unix-v10/man1/gcc.1 b/static/unix-v10/man1/gcc.1 new file mode 100644 index 00000000..df8fcd52 --- /dev/null +++ b/static/unix-v10/man1/gcc.1 @@ -0,0 +1,641 @@ +bg +.\ " ====================== +.\ " This version is 1.22 +.\ " ====================== +.TH GCC 1 "17 May 1988" "Version 1.22" +.SH NAME +gcc \- GNU project C Compiler +.SH SYNOPSIS +.B gcc +[ option ] ... file ... +.SH DESCRIPTION +The +.I GNU\ C\ compiler +uses a command syntax much like the Unix C compiler. The +.I gcc +program accepts options and file names as operands. Multiple +single-letter options may +.I not +be grouped: `\fB\-dr\fR' +is very different from `\fB\-d\ \-r\fR'. +When you invoke +.I GNU\ CC +\, it normally does preprocessing, compilation, +assembly and linking. File names which end in `\fB.c\fR' +are taken as C +source to be preprocessed and compiled; compiler output files plus any +input files with names ending in `\fB.s\fR' +are assembled; then the +resulting object files, plus any other input files, are linked together to +produce an executable. +Command options allow you to stop this process at an intermediate stage. +For example, the `\fB\-c\fR' +option says not to run the linker. +Then the output consists of object files output by the assembler. +Other command options are passed on to one stage. +Some options control the preprocessor and others the compiler itself. +.SH OPTIONS +Here are the options to control the overall compilation process, +including those that say whether to link, whether to assemble, and so on. +.TP +.BI \-o "\ \ file" +Place linker output in file \fIfile\fR. +This applies regardless to whatever sort of output is being produced, +whether it be an executable file, an object file, an assembler file or +preprocessed C code. +If `\fB\-o\fR' +is not specified, the default is to put an executable file +in `a.out', the object file `\fIsource\fB.c\fR' in `\fIsource\fB.o\fR', +an assembler file in `\fIsource\fB.s\fR', +and preprocessed C on standard output. +.TP +.B \-c +Compile or assemble the source files, but do not link. +Produce object files with names made by replacing `\fB\.c\fR' +or `\fB\.s\fR' +with `\fB\.o\fR' +at the end of the input file names. +Do nothing at all for object files specified as input. +.TP +.B \-S +Compile into assembler code but do not assemble. +The assembler output file name is made by replacing `\fB\.c\fR' +with `\fB\.s\fR' +at the end of the input file name. +Do nothing at all for assembler source files or object files specified +as input. +.TP +.B \-E +Run only the C preprocessor. +Preprocess all the C source files specified +and output the results to standard output. +.TP +.B \-v +Compiler driver program prints the commands it executes as it runs +the preprocessor, compiler proper, assembler and linker. +Some of these are directed to print their own version numbers. +.TP +.BI \-B "prefix" +Compiler driver program tries \fIprefix\fR as a prefix for each program +it tries to run. These programs are `\fBcpp\fR', `\fBcc1\fR', +`\fBas\fR' and `\fBld\fR'. +For each subprogram to be run, the compiler driver first tries +the `\fB\-B\fR' prefix, if any. +If that name is not found, or if `\fB\-B\fR' was not specified, +the driver tries two standard prefixes, +which are `\fB/usr/lib/gcc-\fR' and `\fB/usr/local/lib/gcc-\fR'. +If neither of those results in a file name that is found, +the unmodified program name is searched for using the directories +specified in your `\fBPATH\fR' environment variable. +The run-time support file `\fBgnulib\fR' is also searched for using +the `\fB\-B\fR' prefix, if needed. +If it is not found there, the two standard prefixes above are tried, +and that is all. +The file is left out of the link if it is not found by those means. +Most of the time, on most machines, you can do without it. +.PP +These options control the C preprocessor, +which is run on each C source file before actual compilation. +If you use the `\fB\-E\fR' option, nothing is done except C preprocessing. +Some of these options make sense only together with `\fB\-E\fR' +because they request preprocessor output that is not suitable +for actual compilation. +.TP +.B \-C +Tell the preprocessor not to discard comments. Used with the `\fB\-E\fR' +option. +.TP +.BI \-I "dir" +Search directory +.I dir +for include files. +.TP +.B \-I\- +Any directories specified with `\fB\-I\fR' options before the `\fB\-I\-\fR' +option are searched only for the case of `\fB#include "\fIfile\fB"\fR'; +they are not searched for `\fB#include <\fIfile\fB>\fR'. +If additional directories are specified with `\fB\-I\fR' options after +the `\fB\-I\-\fR', these directories are searched for all '\fB#include\fR' +directives. (Ordinally \fIall\fR '\fB\-I\fR' directories are used this +way.) +In addition, the `\fB\-I\-\fR' option inhibits the use of the current +directory as the first search directory for `\fB#include "\fIfile\fB"\fR'. +Therefore, the current directory is searched only if it is requested +explicitly with `\fB\-I.\fR'. +Specifying both `\fB\-I\-\fR' and `\fB\-I.\fR' allows you to control precisely +which directories are searched before the current one and which are +searched after. +.TP +.B \-nostdinc +Do not search the standard system directories for header files. +Only the directories you have specified with `\fB\-I\fR' options +(and the current directory, if appropriate) are searched. +Between `\fB\-nostdinc\fR' and `\fB\-I-\fR', you can eliminate all +directories from the search path except those you specify. +.TP +.B \-M +Tell the preprocessor to output a rule suitable for \fBmake\fR +describing the dependencies of each source file. +For each source file, the preprocessor outputs one \fBmake\fR-rule +whose target is the object file name for that source file and +whose dependencies are all the files `\fB#include\fR'd in it. +This rule may be a single line or may be continued `\fB\\\fR'-newline +if it is long.`\fB\-M\fR' implies `\fB\-E\fR'. +.TP +.B \-MM +Like `\fB\-M\fR' but the output mentions only the user-header files included +with `\fB#include "\fIfile\fB"\fR'. +System header files included with `\fB#include <\fIfile\fB>\fR' +are omitted.`\fB\-MM\fR' implies `\fB\-E\fR'. +.TP +.BI \-D "macro" +Define macro \fImacro\fR +with the empty string as its definition. +.TP +.B \-D\fImacro=defn\fR +Define macro \fImacro\fR as \fIdefn\fR. +.TP +.BI \-U "macro" +Undefine macro \fImacro\fR. +.TP +.B \-T +Support ANSI C trigraphs. +You don't want to know about this brain-damage. +The `\fB\-ansi\fR' option also has this effect. +.PP +These options control the details of C compilation itself. +.TP +.B \-ansi +Support all ANSI standard C programs. +This turns off certain features of GNU C that are incompatible with +ANSI C, such as the \fBasm\fR, \fBinline\fR and \fBtypeof\fR keywords, and +predefined macros such as \fBunix\fR and \fBvax\fR that identify +the type of system you are using. +It also enables the undesirable and rarely used ANSI trigraph feature. +The `\fB\-ansi\fR' option does not cause non-ANSI programs to be rejected +gratuitously. +For that, `\fB\-pedantic\fR' is required in addition to `\fB\-ansi\fR'. +The macro \fB__STRICT_ANSI__\fR +is predefined when the `-ansi' option is used. +Some header files may notice this macro and refrain from declaring +certain functions or defining certain macros that the ANSI standard +doesn't call for; this is to avoid interfering with any programs +that might use these names for other things. +.TP +.B \-traditional +Attempt to support some aspects of traditional C compilers. +Specifically: +.br +\(** All \fBextern\fR declarations take effect globally even if +they are written inside of a function definition. +This includes implicit declarations of functions. +.br +\(** The keywords \fBtypeof\fR, \fBinline\fR, \fBsigned\fR, \fBconst\fR +and \fBvolatile\fR are not recognized. +.br +\(** Comparisons between pointers and integers are always allowed. +.br +\(** Integer types \fBunsigned short\fR and \fBunsigned char\fR +promote to \fBunsigned int\fR. +.br +\(** In the preprocessor, comments convert to nothing at all, +rather than to a space. +This allows traditional token concatenation. +.br +\(** In the preprocessor, single and double quote characters are +ignored when scanning macro definitions, so that macro arguments +can be replaced even within a string or character constant. +Quote characters are also ignored when skipping text inside +a failing conditional directive. +.TP +.B \-pedantic +Issue all the warnings demanded by strict ANSI standard C; +reject all programs that use forbidden extensions. +Valid ANSI standard C programs should compile properly with or +without this option (though a rare few will require `\fB\-ansi\fR'. +However, without this option, certain GNU extensions and +traditional C features are supported as well. +With this option, they are rejected. +There is no reason to \fIuse\fR +this option; it exists only to satisfy pedants. +.TP +.B \-O +Optimize. Optimizing compilation takes somewhat more time, and a lot +more memory for a large function. +Without `\fB\-O\fR', the compiler's goal is to reduce the cost of +compilation and to make debugging produce the expected results. +Statements are independent: if you stop the program with a breakpoint +between statements, you can then assign a new value to any variable or +change the program counter to any other statement in the function and +get exactly the results you would expect from the source code. +Without `\fB\-O\fR', only variables declared \fBregister\fR +are allocated in registers. +The resulting compiled code is +a little worse than produced by PCC without `\fB\-O\fR'. +With `\fB\-O\fR', the compiler tries to reduce code size and execution time. +Some of the `\fB\-f\fR' options described below turn specific +kinds of optimization on or off. +.TP +.B \-g +Produce debugging information in DBX format. +Unlike most other C compilers, +GNU CC allows you to use `\fB\-g\fR' with `\fB\-O\fR'. +The shortcuts taken by optimized code may occasionally +produce surprising results: some variables you declared may not exist +at all; flow of control may briefly move where you did not expect it; +some statements may not be executed because they compute constant +results or their values were already at hand; some statements may +execute in different places because they were moved out of loops. +Nevertheless it proves possible to debug optimized output. +This makes it reasonable to use the optimizer for programs that might +have bugs. +.TP +.B \-gg +Produce debugging information in GDB(GNU Debugger)'s own format. +This requires the GNU assembler and linker +in order to work. +.TP +.B \-w +Inhibit all warning messages. +.TP +.B \-W +Print extra warning messages for these events: +.br +\(** An automatic variable is used without first being initialized. +These warnings are possible only in optimizing compilation, because +they require data flow information that is computed only when +optimizing. +They occur only for variables that are candidates for register +allocation. Therefore, they do not occur for a variable that is +declared +.B volatile, +or whose address is taken, or whose size is other than +1,2,4 or 8 bytes. Also, they do not occur for structures, +unions or arrays, even when they are in registers. +Note that there may be no warning about a variable that is used +only to compute a value that itself is never used, because such +computations may be deleted by the flow analysis pass before the +warnings are printed. +These warnings are made optional because GNU CC is not smart +enough to see all the reasons why the code might be correct +despite appearing to have an error. +.br +\(** A nonvolantile automatic variable might be changed +by a call to \fBlongjmp\fR. +These warnings as well are possible only in optimizing compilation. +The compiler sees only the calls to \fBsetjmp\fR. +It cannot know where \fBlongjmp\fR +will be called; in fact, a signal handler could call it at any point +in the code. As a result, you may get a warning even when there is +in fact no problem because \fBlongjmp\fR +cannot in fact be called at the place which would cause a problem. +.br +\(** A function can return either with or without a value. +(Falling off the end of the function body is considered returning +without a value.) +Spurious warning can occur because GNU CC does not realize that +certain functions (including \fBabort\fR +and \fBlongjmp\fR) will never return. +.TP +.B \-Wimplicit +Warn whenever a function is implicitly declared. +.TP +.B \-Wreturn-type +Warn whenever a function is defined with a return-type that +defaults to \fBint\fR. Also warn about any \fBreturn\fR +statement with no return-value in a function whose return-type +is not \fBvoid\fR. +.TP +.B \-Wcomment +Warn whenever a comment-start sequence `/*' appears in a comment. +.TP +.B \-p +Generate extra code to write profile information suitable for the +analysis program \fBprof\fR. +.TP +.B \-pg +Generate extra code to write profile information suitable for the +analysis program \fBgprof\fR. +.TP +.BI \-l "library" +Search a standard list of directories for a library named \fIlibrary\fR, +which is actually a file named `\fBlib\fIlibrary\fB.a\fR'. +The linker uses this file as if it had been specified precisely by name. +The directories searched include several standard system directories +plus any that you specify with `\fB\-L\fR'. +Normally the files found this way are library files - archive files whose +members are object files. The linker handles an archive file by through +it for members which define symbols that have so far been referenced +but not defined. But if the file that is found is an ordinary +object file, it is linked in the usual fashion. +The only difference between an `\fB\-l\fR' option and the full file name of +the file that is found is syntactic and the fact that several directories +are searched. +.TP +.BI \-L "dir" +Add directory \fIdir\fR to the list of directories to be searched +for `\fB\-l\fR'. +.TP +.B \-nostdlib +Don't use the standard system libraries and startup files when +linking. Only the files you specify (plus `\fBgnulib\fR') +will be passed to the linker. +.TP +.BI \-m "machinespec" +Machine-dependent option specifying something about the type of target machine. +These options are defined by the macro \fBTARGET_SWITCHES\fR +in the machine description. The default for the options is also +defined by that macro, which enables you to change the defaults. +.IP +These are the `\fB\-m\fR' options defined in the 68000 machine description: +.TP 10 +.B \ \ \ \ \ \ \ \ \-m68020 +Generate output for a 68020 (rather than a 68000). +This is the default if you use the unmodified sources. +.TP 10 +.B \ \ \ \ \ \ \ \ \-m68000 +Generate output for a 68000 (rather than a 68020). +.TP 10 +.B \ \ \ \ \ \ \ \ \-m68881 +Generate output containing 68881 instructions for floating point. +This is the default if you use the unmodified sources. +.TP 10 +.B \ \ \ \ \ \ \ \ \-msoft-float +Generate output containing library calls for floating point. +.TP 10 +.B \ \ \ \ \ \ \ \ \-mshort +Consider type \fBint\fR to be 16 bits wide, like \fBshort int\fR. +.TP 10 +.B \ \ \ \ \ \ \ \ \-mnobitfield +Do not use the bit-field instructions. +.B '\-m68000' +implies +.B '\-mnobitfield'. +.TP 10 +.B \ \ \ \ \ \ \ \ \-mbitfield +Do use the bit-field instructions. +.B '\-m68020' +implies +.B '\-mbitfield'. +This is the default if you use the unmodified sources. +.TP 10 +.B \ \ \ \ \ \ \ \ \-mrtd +Use a different function-calling convention, in which functions that +take a fixed number of arguments return with the \fBrtd\fR +instruction, which pops their arguments while returning. This saves +one instruction in the caller since there is no need to pop the +arguments there. +This calling convention is incompatible with the one normally used on +Unix, so you cannot use it if you need to call libraries compiled with +the Unix compiler. +Also, you must provide function prototypes for all functions that take +variable numbers of arguments (including \fBprintf\fR); otherwise +incorrect code will be generated for calls to those functions. +In addition, seriously incorrect code will result if you call a +function with too many arguments. (Normally, extra arguments are +harmlessly ignored.) +The \fBrtd\fR +instruction is supported by the 68010 and 68020 +processors, but not by the 68000. +.IP +These are the `\fB\-m\fR' options defined in the VAX machine description: +.TP 10 +.B \ \ \ \ \ \ \ \ \-munix +Do not output certain jump instructions ( +.B aobleq +and so on) that the Unix assembler +for the VAX cannot handle across long ranges. +.TP 10 +.B \ \ \ \ \ \ \ \ \-mgnu +Do output those jump instructions, on the assumption +that you will assemble with the GNU assembler. +.TP 5 +.BI \-f "flag" +Specify machine-independent flags. These are the flags: +.TP 10 +.B \ \ \ \ \ \ \ \ \-ffloat-store +Do not store floating-point variables in registers. +This prevents undesirable excess precision on machines such as the 68000 +where the floating registers (of the 68881) keep more precision +than a \fBdouble\fR is supposed to have. +For most programs, the excess precision does only good, but a few +programs rely on the precise definition of IEEE floating point. +Use ` +.B \-ffloat-store' +for such programs. +.TP 10 +.B \ \ \ \ \ \ \ \ \-frno-asm +Do not recognize \fBasm\fR, \fBinline\fR or \fBtypeof\fR +as a keyword. These words may then be used as identifiers. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fno-defer-pop +Always pop the arguments to each function call as soon as that +function returns. +Normally the compiler (when optimizing) lets arguments accumulate on the +stack for several function calls and pops them all at once. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fcombine-regs +Allow the combine pass to combine an instruction that copies one +register into another. +This might or might not produce better code when used in addition to ` +.B \-O'. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fforce-mem +Force memory operands to be copied into registers before doing +arithmetic on them. +This may produce better code by making all +memory references potential common subexpressions. +When they are not common subexpressions, +instruction combination should eliminate the separate register-load. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fforce-addr +Force memory address constants to be copied into registers before +doing arithmetic on them. +This may produce better code just as ` +.B \-fforce-mem' +may. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fomit-frame-pointer +Don't keep the frame pointer in a register for functions that don't +need one. This avoids the instructions to save, set up and restore +frame pointers; it also makes an extra register available in many +functions. \fBIt\ also\ makes\ debugging\ impossible.\fR +On some machines, such as the VAX, this flag has no effect, +because the standard calling sequence automatically handles +the frame pointer and nothing is saved by pretending it doesn't exist. +The machine-description macro \fBFRAME_POINTER_REQUIRED\fR +controls whether a target machine supports this flag. +.TP 10 +.B \ \ \ \ \ \ \ \ \-finline-functions +Integrate all simple functions into their callers. +The compiler heuristically decides which functions are simple enough +to be worth integrating in this way. +If all calls to a given function are integrated, and the function +is declared \fBstatic\fR, +then the function is normally not output as assembler code in its +own right. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fkeep-inline-functions +Even if all calls to a given function are integrated, and the +function is declared \fBstatic\fR, +nevertheless output a separate run-time callable version of +the function. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fwritable-strings +Store string constants in the writable data segment and don't uniquize them. +This is for compatibility with old programs which assume +they can write into string constants. Writing into string constants +is a very bad idea; ``constants'' should be constant. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fno-function-cse +Do not put function addresses in registers; make each instruction that +calls a constant function contain the function's address explicitly. +This option results in less efficient code, but some strange hacks +that alter the assembler output may be confused by the optimizations +performed when this option is not used. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fvolatile +Consider all memory references through pointers to be volatile. +.TP 10 +.B \ \ \ \ \ \ \ \ \-funsigned-char +Let the type \fBchar\f be the unsigned, like \fBunsigned char\fR. +Each kind of machine has a default for what \fBchar\fR +should be. It is either like \fBunsigned char\fR +by default of like \fBsigned char\fR +by default. (Actually, at present, the default is always signed.) +The type \fBchar\fR +is always a distinct type from either \fBsigned char\fR +or \fBunsigned char\fR, +even though its behavior is always just like one of those two. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fsigned-char +Let the type \fBchar\fR be the same as \fBsigned char\fR. +.TP 10 +.B \ \ \ \ \ \ \ \ \-ffixed-\fIreg\fR +Treat the register named \fIreg\fR as a fixed register; generated +code should never refer to it (except perhaps as a stack pointer, +frame pointer or in some other fixed role). \fIreg\fR +must be the name of a register. +The register names accepted are machine-specific and are defined in +the \fBREGISTER_NAMES\fR +macro in the machine description macro file. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fcall-used-\fIreg\fR +Treat the register named \fIreg\fR +as an allocatable register that is clobberred by function calls. +It may be allocated for temporaries or variables +that do not live across a call. +Functions compiled this way will not save and restore the +register \fIreg\fR. +Use of this flag for a register that has a fixed pervasive role +in the machine's execution model, such as the stack pointer or +frame pointer, will produce disastrous results. +.TP 10 +.B \ \ \ \ \ \ \ \ \-fcall-saved-\fIreg\fR +Treat the register named \fIreg\fR +as an allocatable register saved by functions. +It may be allocated even for temporaries or +variables that live across a call. Functions compiled this way +will save and restore the register \fIreg\fR if they use it. +Use of this flag for a register that has a fixed pervasive role +in the machine's execution model, such as the stack pointer or +frame pointer, will produce disastrous results. +A different sort of disaster will result from the use of this +flag for a register in which function values are may be returned. +.TP +.BI \-d "letters" +Says to make debugging dumps at times specified by \fIletters\fR. +Here are the possible letters: +.TP 10 +.B \ \ \ \ \ \ \ \ r +Dump after RTL generation. +.TP 10 +.B \ \ \ \ \ \ \ \ j +Dump after first jump optimization. +.TP 10 +.B \ \ \ \ \ \ \ \ J +Dump after last jump optimization. +.TP 10 +.B \ \ \ \ \ \ \ \ s +Dump after CSE (including the jump optimization that sometimes +follows CSE). +.TP 10 +.B \ \ \ \ \ \ \ \ L +Dump after loop optimization. +.TP 10 +.B \ \ \ \ \ \ \ \ f +Dump after flow analysis. +.TP 10 +.B \ \ \ \ \ \ \ \ c +Dump after instruction combination. +.TP 10 +.B \ \ \ \ \ \ \ \ l +Dump after local register allocation. +.TP 10 +.B \ \ \ \ \ \ \ \ g +Dump after global register allocation. +.TP 10 +.B \ \ \ \ \ \ \ \ m +Print statistics on memory usage, at the end of the run. +.SH FILES +.ta \w'/usr/local/lib/gcc-gnulib 'u +file.c input file +.br +file.o object file +.br +a.out loaded output +.br +/tmp/cc? temporary +.br +/usr/local/lib/gcc-cpp preprocessor +.br +/usr/local/lib/gcc-cc1 compiler +.br +/usr/local/lib/gcc-gnulib library need by GCC on some machines +.br +/lib/crt0.o runtime startoff +.br +/lib/libc.a standard library, see +.IR intro (3) +.br +/usr/include standard directory for `#include' files +.br +.SH "SEE ALSO" +B. W. Kernighan and D. M. Ritchie, +.I The C Programming Language, +Prentice-Hall, +1978 +.br +B. W. Kernighan, +.I +Programming in C +.br +D. M. Ritchie, +.I +C Reference Manual +.br +adb(1), ld(1), dbx(1), as(1) +.SH BUGS +Bugs should be reported to bug-gcc@prep.ai.mit.edu. Bugs tend actually to be +fixed if they can be isolated, so it is in your interest to report them +in such a way that they can be easily reproduced according to get newer version. +.SH COPYING +Copyright (C) 1988 Richard M. Stallman. +.br +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. +.br +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +section entitled "GNU CC General Public License" is included exactly as +in the original, and provided that the entire resulting derived work is +distributed under the terms of a permission notice identical to this one. +.br +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that the section entitled "GNU CC General Public License" may be +included in a translation approved by the author instead of in the original +English. +.SH AUTHORS +Richard M. Stallman |
