man pages section 1: User Commands

Exit Print View

Updated: July 2014

bcc (1)


bcc - Bruce's C compiler


bcc  [-03EGNOPSVcegvwxW] [-Aas_option] [-Bexecutable_prefix]
[-Ddefine]   [-Uundef]   [-Mc_mode]   [-o outfile]   [-ansi]
[-Ccc1_option]  [-Pcpp_option] [-Iinclude_dir] [-Lld_option]
[-Ttmpdir]   [-Qc386_option]   [-ttext_segno]   [ld_options]


User Commands                                              bcc(1)

     bcc - Bruce's C compiler

     bcc  [-03EGNOPSVcegvwxW] [-Aas_option] [-Bexecutable_prefix]
     [-Ddefine]   [-Uundef]   [-Mc_mode]   [-o outfile]   [-ansi]
     [-Ccc1_option]  [-Pcpp_option] [-Iinclude_dir] [-Lld_option]
     [-Ttmpdir]   [-Qc386_option]   [-ttext_segno]   [ld_options]

     Bcc  is a simple C compiler that produces 8086 assembler, in
     addition compiler compile time options allow 80386  or  6809
     versions.  The  compiler  understands traditional K&R C with
     just the restriction that bit fields are mapped  to  one  of
     the other integer types.

     The  default  operation  is  to  produce  an 8086 executable
     called a.out from the source file.

          Pass   the   C   source   through   unprotoize    after
          preprocessing  and  before  code  generation. This will
          allow some ansi C to be compiled but  it  is  definitly
          NOT a 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 paths specified using -B, in order, then
          the   path   given   in   the   environment    variable
          BCC_EXEC_PREFIX  if  that  is set, then the compiled-in
          defaults  (something  like  /usr/lib/bcc/  followed  by

     -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 (Same as -Mg)


SunOS 5.11            Last change: Nov, 1997                    1

User Commands                                              bcc(1)

          include search 'xyz' path

     -I   don't add default include to search list

          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 -i to get tiny model.

     -Mf  sets  bcc  to  pass the -c and -f arguments to the code
          generator for smaller faster code. Note  this  code  is
          not compatible with the standard calling conventions so
          a different version of the C library is linked too.

     -Mc  sets bcc to pass the -c argument to the code  generator
          for  smaller  faster  code.  Note  the standard libc is
          normally transparent to this, but there are exceptions.

     -Ms  alters  the  arguments  for  all  passes and selects C-
          library to produce standalone Linux-86 executables

     -Ml  switches to  i386-Linux  code  generator  and  library.
          This  configuration  accepts  the  -z  flag to generate
          QMAGIC a.out files instead of the normal OMAGIC.

     -Mg  switches to i386-Linux  code  generator  and  generates
          OMAGIC  object  files  that  can  be  linked  with some
          versions of gcc; unfortunatly the most recent  versions
          use 'collect2' to link and this crashes.

     -N   makes  the  linker  produce  a native a.out file (Linux
          OMAGIC) if combined with -3  the  executable  will  run
          under Linux-i386.

     -O   optimize,   call   copt(1)   to   optimize  8086  code.
          Specifiers to choose which rules copt should use can be
          appended to the -O and 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  is  from  the  environment  variable

SunOS 5.11            Last change: Nov, 1997                    2

User Commands                                              bcc(1)

          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 linker as -Ofile)

     -c   produce object file

     -f   turn  on  floating  point support, no effect with i386,
          changes libc library with 8086 code.

     -g   produce debugging info (ignored.)

     -o   output  file  name  follows   (assembler,   object   or
          executable) (as usual)

     -p   produce profiling info (ignored.)

     -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  print names of files being unlinked.  Three
          or more -v's print names of paths being searched.

     -w   Supress any warning diagnostics.

     -W   Turn on assembler warning messages.

     -x   don't include crt0.o in the link.

     -i   don't pass -i to the linker so that it will  create  an
          impure executable.

     Other  options  are passed to the linker, in particular -lx,
     -M, -m, -s, -H.

     These are all options that the code generator  pass  bcc-cc1
     understands,  only  some will be useful for the -C option of

     -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)

SunOS 5.11            Last change: Nov, 1997                    3

User Commands                                              bcc(1)

     -E   produce preprocessor output (as usual)

     -I   include search path (as usual)

     -P   produce preprocessor output with no  line  numbers  (as

     -c   produce  code  with  caller saving regs before function

     -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 output

     All  the  options  except -D, -I and -o may be turned off by
     following the option letter by a '-'.  Options are processed
     left to right so the last setting has precedence.

     The preprocessor has a number of manifest constants.

     __BCC__ 1
          The   compiler   identifier,  normally  used  to  avoid
          compiler limitations.

          stringized name of current input file

          current line number

     __MSDOS__ 1
          compiler is configured for generating MSDOS  executable
          COM files.

     __STANDALONE__ 1

SunOS 5.11            Last change: Nov, 1997                    4

User Commands                                              bcc(1)

          compiler   is   configured  for  generating  standalone

     __AS386_16__ 1
          compiler is generating 16 bit 8086  assembler  and  the
          #asm keyword is available for including 8086 code.

     __AS386_32__ 1
          compiler  is  generating 32 bit 80386 assembler and the
          #asm keyword is available for including 80386 code.

     __CALLER_SAVES__ 1
          compiler calling conventions are altered so the calling
          function  must save the SI and DI registers 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 passing the first argument to the function
          in the AX (or EAX ) register.

     __LONG_BIG_ENDIAN__ 1
          alters the word order of code  generated  by  the  8086

     These  defines  only  occur  in  the  6809  version  of  the

     __AS09__ 1
          compiler is generating 6809 code

     __FIRST_ARG_IN_X__ 1
          the first argument to functions  is  passed  in  the  X

          the code generated is (almost) position independent.

          default directory to seach for compiler passes

          directory to place temporary files (default /tmp)

     All  the include, library and compiler components are stored
     under the /usr/bcc directory under Linux-i386, this is  laid
     out  the  same  as a /usr filesystem and if bcc is to be the
     primary compiler on a system it should be moved  there.  The
     configuration for this is in the bcc.c source file only, all
     other executables are independent of location.

SunOS 5.11            Last change: Nov, 1997                    5

User Commands                                              bcc(1)

     The   library   installation   also   creates    the    file
     /usr/lib/liberror.txt,  this  path  is  hardcoded into the C

     The bcc executable itself, as86 and ld86 are in /usr/bin.

     See  attributes(5)  for  descriptions   of   the   following

     |Availability   | developer/bcc    |
     |Stability      | Uncommitted      |
     as86(1), ld86(1), elksemu(1)

     The bcc.c compiler driver source is very untidy.

     The  linker,  ld86,  produces  a broken a.out object file if
     given one  input  and  the  -r  option  this  is  so  it  is
     compatible with pre-dev86 versions.

     This   software   was   built   from   source  available  at   The   original
     community       source       was       downloaded       from

     Further  information about this software can be found on the
     open        source        community        website        at

SunOS 5.11            Last change: Nov, 1997                    6