MAN page from Mandrake 10.X dev86-0.16.3-2mdk.i586.rpm
bcc
Section: User Commands (1)
Updated: Nov, 1997
Index NAME
bcc - Bruce's C compiler
SYNOPSIS
bcc[
-03EGNOPSVcegvwxW][
-Aas_option][
-Bexecutable_prefix][
-Ddefine][
-Uundef][
-Mc_mode][
-o outfile][
-ansi][
-Ccc1_option][
-Iinclude_dir][
-Lld_option][
-Ttmpdir][
-Qc386_option][
-ttext_segno][
ld_options][
infiles]
DESCRIPTION
Bccis a simple C compiler that produces 8086 assembler, in addition compilercompile time options allow 80386 or 6809 versions. The compiler understandstraditional K&R C with just the restriction that bit fields are mapped toone of the other integer types.
The default operation is to produce an 8086 executable calleda.outfrom the source file.
OPTIONS
- -ansi
- Pass the C source throughunprotoizeafter preprocessing and before code generation. This will allowsomeansi C to be compiled but it is definitlyNOTa true ansi-C compiler.
- -0
- 8086 target (works on 80386 host, but not 6809)
- -3
- 80386 target (may work on 8086 host, but not 6809)
- -A
- pass remainder of option to assembler (e.g. -A-l -Alistfile for a listing)
- -B
- prefix for executable search path (as usual; the search order is all pathsspecified using-B,in order, then the path given in the environment variableBCC_EXEC_PREFIXif that is set, then the compiled-in defaults(something like /usr/lib/bcc/ followed by /usr/bin/)
- -C
- pass remainder of option to bcc-cc1, see code generation options.
- -D
- preprocessor define
- -E
- produce preprocessor output to standard out.
- -G
- produce GCC objects (only useful for i386 code)
- -Ixyz
- include search 'xyz' path
- -I
- don't add default include to search list
- -Lxyz
- add directory name 'xyz' to the head of the list of library directories searched
- -L
- don't add default library to search list
- -Md
- alters the arguments for all passes to produce MSDOS executable COM files.These are small model executables, use-ito get tiny model.
- -Mf
- sets bcc to pass the-cand-farguments to the code generator for smaller faster code. Note this code isnot compatible with the standard calling conventions so a different versionof the C library is linked too.
- -Mc
- sets bcc to pass the-cargument to the code generator for smaller faster code. Note the standardlibc is normally transparent to this, but there are exceptions.
- -Ms
- alters the arguments for all passes and selects C-libraryto produce standalone Linux-86 executables
- -Ml
- switches to i386-Linux code generator and library.This configuration accepts the-zflag to generate QMAGIC a.out files instead of the normal OMAGIC.
- -N
- makes the linker produce a native a.out file (Linux OMAGIC) if combinedwith -3 the executable will run under Linux-i386.
- -O
- optimize, callcopt(1)to optimize 8086 code. Specifiers to choose which rules coptshould use can be appended to the-Oand the option can be repeated.
- -P
- produce preprocessor output with no line numbers to standard output.
- -Q
- pass full option to c386 (Only for c386 version)
- -S
- produce assembler file
- -T
- temporary directory (overrides previous value and default; default isfrom the environment variable TMPDIR if that is set, otherwise /tmp)
- -U
- preprocessor undefine
- -V
- print names of files being compiled
- -X
- pass remainder of option to linker (e.g. -X-Ofile is passed to the linkeras -Ofile)
- -c
- produce object file
- -e
- run the preprocess pass separately. This takes less memory, and may helpor harm by giving more traditional semantics like token pasting with /**/.
- -f
- error (float emulation not supported)
- -g
- produce debugging info (does nothing)
- -o
- output file name follows (assembler, object or executable) (as usual)
- -p
- error (profiling not supported)
- -t1
- pass to the assembler to renumber the text segment for multi-segment programs.
- -v
- print names and args of subprocesses being run. Two or more -v's printnames of files being unlinked. Three or more -v's print names of pathsbeing searched.
- -w
- Supress any warning diagnostics.
- -W
- Turnonassembler warning messages.
- -x
- don't include crt0.o in the link.
- -i
- don't pass-ito the linker so that it will create an impure executable.Other options are passed to the linker, in particular -lx, -M, -m, -s, -H.
CODE GENERATOR OPTIONS
These are all options that the code generator pass
bcc-cc1understands, only some will be useful for the
-Coption of bcc. The code generator is normally used as a combined C preprocessorand generator but the
-eand
-ansioptions of bcc split the operation.
- -0
- 8086 target (works even on 80386 host, not on 6809)
- -3
- 80386 target (may work even on 8086 host, not on 6809)
- -D
- define (as usual)
- -E
- produce preprocessor output (as usual)
- -I
- include search path (as usual)
- -P
- produce preprocessor output with no line numbers (as usual)
- -c
- produce code with caller saving regs before function calls
- -d
- print debugging information in assembly output
- -f
- produce code with 1st argument passed in a register (AX, EAX or X)
- -l
- produce code for 2 3 1 0 long byte order (only works in 16-bit code),a special library of compiler helper functions is needed for this mode.
- -o
- assembler output file name follows
- -p
- produce (almost) position-independent code (only for the 6809)
- -t
- print source code in assembly output
- -w
- print what cc1 thinks is the location counter in assembly outputAll the options except -D, -I and -o may be turned off by following theoption letter by a '-'. Options are processed left to right so the lastsetting has precedence.
PREPROCESSOR DEFINES
The preprocessor has a number of manifest constants.
- __BCC__ 1
- The compiler identifier, normally used to avoid compiler limitations.
- __FILE__
- stringized name of current input file
- __LINE__
- current line number
- __MSDOS__ 1
- compiler is configured for generating MSDOS executable COM files.
- __STANDALONE__ 1
- compiler is configured for generating standalone executables.
- __AS386_16__ 1
- compiler is generating 16 bit 8086 assembler and the#asmkeyword is available for including 8086 code.
- __AS386_32__ 1
- compiler is generating 32 bit 80386 assembler and the#asmkeyword is available for including 80386 code.
- __CALLER_SAVES__ 1
- compiler calling conventions are altered so the calling function must save theSIandDIregisters if they are in use (ESI and EDI on the 80386)
- __FIRST_ARG_IN_AX__ 1
- compiler calling conventions are altered so the calling function is passingthe first argument to the function in theAX(orEAX)register.
- __LONG_BIG_ENDIAN__ 1
- alters the word order of code generated by the 8086 compiler.These defines only occur in the 6809 version of the compiler.
- __AS09__ 1
- compiler is generating 6809 code
- __FIRST_ARG_IN_X__ 1
- the first argument to functions is passed in theXregister.
- __POS_INDEPENDENT__ 1
- the code generated is (almost) position independent.
ENVIRONMENT
- BCC_EXEC_PREFIX
- default directory to seach for compiler passes
- TMPDIR
- directory to place temporary files (default /tmp)
DIRECTORIES
All the include, library and compiler components are stored under the
/usr/bccdirectory under Linux-i386, this is laid out the same as a
/usrfilesystem and if bcc is to be the primary compiler on a system it shouldbe moved there. The configuration for this is in the
bcc.csource file only, all other executables are independent of location.
The library installation also creates the file/usr/lib/liberror.txt,this path is hardcoded into the C library.
The bccexecutable itself,as86andld86are in /usr/bin.
SEE ALSO
as86(1),
ld86(1),
elksemu(1)
BUGS
The bcc.c compiler driver source is very untidy.
The linker, ld86, produces a broken a.out object file if given one input andthe-roption this is so it is compatible with pre-dev86 versions.
Index
- NAME
- SYNOPSIS
- DESCRIPTION
- OPTIONS
- CODE GENERATOR OPTIONS
- PREPROCESSOR DEFINES
- ENVIRONMENT
- DIRECTORIES
- SEE ALSO
- BUGS
This document was created byman2html,using the manual pages.