ld(1)




NAME

     ld - link-editor for object files


SYNOPSIS

     /usr/ccs/bin/ld [-64] [-a | -r]  [-b]  [-c name]  [-C]  [-G]
     [-i]  [-m] [-s] [-t] [-V] [-B direct] [-B  dynamic | static]
     [-B group] [-B local] [-B eliminate] [-B  reduce]  [-B  sym-
     bolic]  [-d   y  |  n]  [-D token,...] [-e epsym] [-F name |
     -f name]  [-h name] [-I name] [-L path] [-l x]  [-M mapfile]
     [-N string]  [-o outfile] [-p auditlib] [-P auditlib] [-Q  y
     | n] [-R path] [-S supportlib] [-u symname]  [-Y  P,dirlist]
     [-z absexec] [-z  allextract | defaultextract  | weakextract
     ] [-z combreloc] [-z  defs | nodefs] [-z  direct | nodirect]
     [-z  endfiltee]  [-z  finiarray=function]  [-z   groupperm |
     nogroupperm] [-z  ignore | record]  [-z  initarray=function]
     [-z  initfirst] [-z interpose] [-z  lazyload | nolazyload] [
     -z  ld32=arg1,arg2,...]   [   -z   ld64=arg1,arg2,...]   [-z
     loadfltr]  [-z  muldefs] [-z nocompstrtab] [-z nodefaultlib]
     [-z nodelete] [-z nodlopen] [-z nodump] [-z  nopartial]  [-z
     noversion]  [-z  now] [-z origin] [-z preinitarray=function]
     [-z redlocsym] [-z rescan] [-z  text | textwarn  |  textoff]
     [-z verbose] filename...


DESCRIPTION

     The ld command combines relocatable object  files,  performs
     relocation,  and  resolves  external symbols. ld operates in
     two modes, static or dynamic, as governed by the -d  option.
     In  all cases, the output of ld is left in a.out by default.
     See NOTES.

     In static mode, -dn, relocatable object files given as argu-
     ments  are combined to produce an executable object file. If
     the -r option is specified,  relocatable  object  files  are
     combined to produce one relocatable object file.

     In dynamic mode, -dy, the default, relocatable object  files
     given  as  arguments  are  combined to produce an executable
     object file that will be linked at execution with any shared
     object  files given as arguments. If the -G option is speci-
     fied, relocatable object files are  combined  to  produce  a
     shared object.

     If any argument is a library,  ld  by  default  searches  it
     exactly  once  at the point it encounters the library in the
     argument list. The  library  may  be  either  a  relocatable
     archive (see ar(3HEAD)) or a shared object.

     For an archive library, ld loads only  those  routines  that
     define  an  unresolved  external  reference. ld searches the
     archive library  symbol  table  sequentially  with  as  many
     passes  as are necessary to resolve external references that
     can be satisfied by library  members.  Thus,  the  order  of
     members  in  the library is functionally unimportant, unless
     multiple library members exist that define the same external
     symbol.  Archive  libraries  that have interdependencies may
     require multiple command-line definitions, or use of the  -z
     rescan option.

     A shared object consists of an indivisible, whole unit  that
     has  been  generated  by a previous link-edit of one or more
     input files. When the link-editor processes a shared object,
     the  entire  contents  of the shared object become a logical
     part of the resulting output file image. The  shared  object
     is  not physically copied during the link-edit as its actual
     inclusion is deferred until process execution. This  logical
     inclusion  means  that  all  symbol  entries  defined in the
     shared object are made available to  the  link-editing  pro-
     cess.

     No command-line option is required to distinguish 32-bit  or
     64-bit  objects.  The  link-editor uses the ELF class of the
     first input relocatable object file it sees on  the  command
     line  to govern the mode in which it will operate. Intermix-
     ing 32-bit and 64-bit objects is not permitted. See also the
     -64 option and the LD_NOEXEC_64 environment variable.


OPTIONS

     The following options are supported:

     -64   Creates a 64-bit object. By default, the class of  the
           object  being  generated  is determined from the first
           ELF object  processed  from  the  command  line.  This
           option is useful when creating an object directly with
           ld whose input is solely from a mapfile  (see  the  -M
           option) or an archive library.

     -a    In static mode only,  produces  an  executable  object
           file;  gives  errors for undefined references. This is
           the default behavior for static mode. -a  may  not  be
           used with the -r option.

     -b    In dynamic mode only, does no special  processing  for
           relocations  that reference symbols in shared objects.
           Without the -b option, the link-editor creates special
           position-independent  relocations  for  references  to
           functions defined in shared objects and  arranges  for
           data  objects  defined  in shared objects to be copied
           into the memory image of an executable by the  runtime
           linker.

           The -b option  is  intended  for  specialized  dynamic
           objects  and  is  not recommended for general use. Its
           use suppresses all specialized processing required  to
           insure  an object's shareability, and may even prevent
           the relocation of 64-bit executables.

     -B direct
           Establishes direct binding  information  by  recording
           the relationship between each symbol reference and the
           dependency that provides the definition.  The  runtime
           linker  uses  this  information to search directly for
           the symbol in the associated  object  rather  than  to
           carry  out  its  default symbol search. Direct binding
           information can only be  established  to  dependencies
           specified with the link-edit. Thus, you should use the
           -z defs option. Objects that wish to interpose on sym-
           bols  in  a direct binding environment should identify
           themselves  as  interposers  with  the  -z   interpose
           option.  The  use of -B direct enables -z lazyload for
           all dependencies.

     -B dynamic | static
           Options governing library  inclusion.  -B  dynamic  is
           valid  in  dynamic  mode  only.  These  options may be
           specified any number of times on the command  line  as
           toggles:  if  the -B static option is given, no shared
           objects will be accepted until -B dynamic is seen. See
           also the -l option.

     -B eliminate
           Causes any global symbols not assigned  to  a  version
           definition  to  be  eliminated  from the symbol table.
           This option achieves the same  symbol  elimination  as
           the  auto-elimination directive available as part of a
           mapfile version definition.

     -B group
           Establishes a shared object and its dependencies as  a
           group. Objects within the group will be bound to other
           members of the group at runtime. The runtime  process-
           ing  of  an  object  containing  this flag mimics that
           which occurs if the object is added to a process using
           dlopen(3DL)  with  the RTLD_GROUP mode. An object that
           has an explicit dependency on a object identified as a
           group, will itself become a member of the group.

           As the group must be self contained,  use  of  the  -B
           group option also asserts the -z defs option.

     -B local
           Causes any global symbols, not assigned to  a  version
           definition,  to  be  reduced to local. Version defini-
           tions can be supplied via a mapfile and  indicate  the
           global  symbols that should remain visible in the gen-
           erated object. This option achieves  the  same  symbol
           reduction as the auto-reduction directive available as
           part of a mapfile version definition and may be useful
           when combining versioned and non-versioned relocatable
           objects.

     -B reduce
           When  generating  a  relocatable  object,  causes  the
           reduction  of symbolic information defined by any ver-
           sion definitions. Version definitions can be  supplied
           via  a  mapfile  to  indicate  the global symbols that
           should remain visible in the generated object. When  a
           relocatable  object  is  generated, by default version
           definitions are only recorded in the output image. The
           actual  reduction of symbolic information will be car-
           ried out when the object itself is used  in  the  con-
           struction  of  a  dynamic executable or shared object.
           This option is applied automatically when dynamic exe-
           cutable or shared object is created.

     -B symbolic
           In dynamic mode only. When building a  shared  object,
           binds  references  to  global symbols to their defini-
           tions, if  available,  within  the  object.  Normally,
           references to global symbols within shared objects are
           not bound  until  runtime,  even  if  definitions  are
           available,  so  that definitions of the same symbol in
           an executable or other shared object can override  the
           object's  own  definition.  ld will issue warnings for
           undefined symbols unless -z defs overrides.

           The -B symbolic option  is  intended  for  specialized
           dynamic  objects  and  is  not recommended for general
           use. To reduce the runtime relocation overhead  of  an
           object, the creation of a version definition is recom-
           mended.

     -c name
           Records the configuration file name for  use  at  run-
           time.  Configuration  files  may  be employed to alter
           default search paths, provide a  directory  cache  and
           provide alternative object dependencies. See crle(1).

     -C    Demangles C++ symbol  names  displayed  in  diagnostic
           messages.

     -d y | n
           When -d y, the default, is specified, ld uses  dynamic
           linking;  when -d n is specified, ld uses static link-
           ing. See also -B dynamic|static.

     -D token,...
           Prints debugging information,  as  specified  by  each
           token,  to  the standard error. The special token help
           indicates the full list of tokens available.

     -e epsym
           Sets the entry point address for the output file to be
           that of the symbol epsym.

     -f name
           Useful only when building a shared  object.  Specifies
           that  the symbol table of the shared object is used as
           an auxiliary filter on the symbol table of the  shared
           object  specified  by name. Multiple instances of this
           option are allowed. This option may  not  be  combined
           with the -F option.

     -F name
           Useful only when building a shared  object.  Specifies
           that  the symbol table of the shared object is used as
           a filter on the symbol  table  of  the  shared  object
           specified  by  name. Multiple instances of this option
           are allowed. This option may not be combined with  the
           -f option.

     -G    In dynamic mode only, produces a shared object.  Unde-
           fined symbols are allowed.

     -h name
           In dynamic mode only, when building a  shared  object,
           records  name  in  the  object's dynamic section. name
           will be recorded in dynamic objects  that  are  linked
           with  this object rather than the object's file system
           name. Accordingly, name will be used  by  the  runtime
           linker  as the name of the shared object to search for
           at runtime.

     -i    Ignores LD_LIBRARY_PATH. This option is useful when an
           LD_LIBRARY_PATH  setting is in effect to influence the
           runtime library search, which would interfere with the
           link-editing being performed.

     -I name
           When building an executable, uses  name  as  the  path
           name of the interpreter to be written into the program
           header. The default in static mode is no  interpreter;
           in  dynamic  mode, the default is the name of the run-
           time linker, ld.so.1(1). Either case may be overridden
           by -I name. exec(2) will load this interpreter when it
           loads a.out and will pass control to  the  interpreter
           rather than to a.out directly.

     -l x  Searches a library libx.so or libx.a, the conventional
           names for shared object and archive libraries, respec-
           tively. In dynamic mode, unless the -B  static  option
           is  in effect, ld searches each directory specified in
           the library search path for a libx.so or libx.a  file.
           The directory search stops at the first directory con-
           taining either. ld chooses the file ending in  .so  if
           -lx  expands  to  two  files  with  names  of the form
           libx.so and libx.a. If no libx.so is  found,  then  ld
           accepts  libx.a. In static mode, or when the -B static
           option is in effect, ld selects only the  file  ending
           in  .a.  ld  searches a library when it encounters its
           name, so the placement of -l is significant.

     -L path
           Adds  path  to  the  library  search  directories.  ld
           searches for libraries first in any directories speci-
           fied by the -L options and then in the standard direc-
           tories.  This option is useful only if it precedes the
           -l options to which it applies on  the  command  line.
           The  environment  variable LD_LIBRARY_PATH may be used
           to   supplement   the   library   search   path.   See
           LD_LIBRARY_PATH below.

     -m    Produces a memory map or listing of  the  input/output
           sections, together with any non-fatal multiply-defined
           symbols, on the standard output.

     -M mapfile
           Reads mapfile as a text file of directives to ld. This
           option  may be specified multiple times. If mapfile is
           a directory, then all regular  files,  as  defined  by
           stat(2),  within  the directory will be processed. See
           Linker and Libraries Guide for a description  of  map-
           files. There are mapfiles in /usr/lib/ld that show the
           default layout of programs, mapfiles for  linking  64-
           bit programs above or below 4 gigabytes, and a mapfile
           for establishing  a  non-executable  stack  within  an
           application. See the FILES section below.

     -N string
           This option causes a DT_NEEDED entry to  be  added  to
           the  .dynamic  section  of the object being built. The
           value of the  DT_NEEDED  string  will  be  the  string
           specified on the command line. This option is position
           dependent, and the DT_NEEDED .dynamic  entry  will  be
           relative  to the other dynamic dependencies discovered
           on the link-edit  line.  This  option  is  useful  for
           specifying  dependencies within device driver relocat-
           able  objects  when  combined  with  the  -dy  and  -r
           options.

     -o outfile
           Produces an output object file named outfile. The name
           of the default object file is a.out.

     -p auditlib
           Identifies an audit library, auditlib, that is used to
           audit  this object at runtime. Any shared object iden-
           tified  as  requiring  auditing  of  itself  has  this
           requirement  inherited  by  any object specifying this
           shared object as a dependency. See also the -P option.

     -P auditlib
           Identifies an audit library, auditlib, that is used to
           audit  this  object's  dependencies at runtime. Depen-
           dency auditing can also be inherited from dependencies
           identified  as  requiring  auditing.  See  also the -p
           option.

     -Q y | n
           Under -Q y, an ident string is added to  the  .comment
           section  of the output file to identify the version of
           the link-editor used to create the file. This  results
           in  multiple  ld  idents when there have been multiple
           linking steps, such as  when  using  ld  -r.  This  is
           identical  with  the default action of the cc command.
           -Q n suppresses version identification.

     -r    Combines relocatable object files to produce one relo-
           catable  object  file.  ld  will  not  complain  about
           unresolved references. This option cannot be used with
           the -a option.

     -R path
           A colon-separated list of directories used to  specify
           library  search  directories to the runtime linker. If
           present and not NULL, it is  recorded  in  the  output
           object file and passed to the runtime linker. Multiple
           instances of this  option  are  concatenated  together
           with each path separated by a colon.

     -s    Strips symbolic information from the output file.  Any
           debugging  information,  that  is, .line, .debug*, and
           .stab*  sections,  and  their  associated   relocation
           entries  are  removed. Except for relocatable files, a
           symbol table  SHT_SYMTAB  and  its  associated  string
           table  section  are  not  created in the output object
           file. See also -z redlocsym.

     -S supportlib
           The shared object supportlib is loaded with the  link-
           editor  and  given  information  regarding the linking
           process. Support shared objects may also  be  supplied
           using the SGS_SUPPORT environment variable. See Linker
           and Libraries Guide for more details.

     -t    Turns off the  warning  for  multiply-defined  symbols
           that have different sizes or alignments.

     -u symname
           Enters symname as an undefined symbol  in  the  symbol
           table.  This  is  useful  for loading entirely from an
           archive library, since initially the symbol  table  is
           empty,  and an unresolved reference is needed to force
           the loading of the first  routine.  The  placement  of
           this  option  on  the  command line is significant; it
           must be placed before the library that will define the
           symbol.

     -V    Outputs a message giving information about the version
           of ld being used.

     -Y P,dirlist
           Changes  the  default  directories  used  for  finding
           libraries. dirlist is a colon-separated path list.

     -z absexec
           Useful only when building a dynamic executable. Speci-
           fies  that  references  to  external  absolute symbols
           should be resolved immediately instead of  being  left
           for  resolution  at  runtime. In very specialized cir-
           cumstances, this option removes text relocations  that
           can  result in excessive swap space demands by an exe-
           cutable.

     -z allextract | defaultextract | weakextract
           Alters the extraction criteria  of  objects  from  any
           archives  that follow. By default, archive members are
           extracted to satisfy undefined references and to  pro-
           mote tentative definitions with data definitions. Weak
           symbol references do not trigger extraction. Under  -z
           allextract, all archive members are extracted from the
           archive. Under -z weakextract, weak references trigger
           archive extraction. -z defaultextract provides a means
           of returning to  the  default  following  use  of  the
           former extract options.

     -z combreloc
           Combines multiple relocation  sections.  Historically,
           relocation  sections  are  maintained  in a one-to-one
           relationship with the sections to  which  the  reloca-
           tions  will be applied. When building an executable or
           shared object, ld sorts the entries of data relocation
           sections  by  their  symbol  reference so as to reduce
           runtime symbol lookup. Combining multiple data reloca-
           tion  sections  allows  optimal  sorting and hence the
           least relocation overhead when objects are loaded into
           memory.

     -z defs | nodefs
           The -z defs option forces a fatal error if  any  unde-
           fined  symbols  remain at the end of the link. This is
           the default when an executable is built, but for  his-
           toric  reasons  is  not  the  default  when building a
           shared object. Use of the -z  defs  option  is  recom-
           mended,  as it assures the object being built is self-
           contained, that is, that all its  symbolic  references
           are  resolved  internally or to the object's immediate
           dependencies.

           The -z nodefs option  allows  undefined  symbols.  For
           historic  reasons,  this  is the default when a shared
           object is  built.  When  used  with  executables,  the
           behavior  of  references  to such undefined symbols is
           unspecified. Use of the -z nodefs option is not recom-
           mended

     -z direct | nodirect
           Enables or disables direct binding to any dependencies
           that  follow  on the command line. These options allow
           finer control over  direct  binding  than  the  global
           counterpart -B direct.

     -z endfiltee
           Marks a filtee so that when processed by a  filter  it
           terminates any further filtee searches by the filter.

     -z finiarray=function
           Appends an entry to  the  .finiarray  section  of  the
           object  being  built.  If  no  .finiarray  section  is
           present, one is created. The new entry is  initialized
           to  point  to function. See Linker and Libraries Guide
           for more details.

     -z groupperm | nogroupperm
           Assigns, or deassigns each dependency that follows  to
           a  unique group. Assigning a dependency to a group has
           the same effect as if the dependency  had  been  built
           using the -B group option.

     -z ignore | record
           Ignores, or records, dynamic dependencies that are not
           referenced  as  part  of  the  link-edit.  Ignores, or
           records, unreferenced ELF sections from  the  relocat-
           able  objects  input  as  part  of  the  link-edit. By
           default, -z record is in effect.

           If an ELF section is ignored, it  is  eliminated  from
           the  output file being generated. A section is ignored
           when three conditions are true, that is, if  the  sec-
           tion  contributes  to  an  allocatable  segment, if it
           provides no global symbols, and if  no  other  section
           from  any  object  that  contributes  to the link-edit
           references it.

     -z initarray=function
           Appends an entry to  the  .initarray  section  of  the
           object  being  built.  If  no  .initarray  section  is
           present, one is created. The new entry is  initialized
           to  point  to function. See Linker and Libraries Guide
           for more details.

     -z initfirst
           Marks the object so that  its  runtime  initialization
           occurs  before the runtime initialization of any other
           objects brought into the process at the same time.  In
           addition,  the  object runtime finalization will occur
           after the runtime finalization of  any  other  objects
           removed from the process at the same time. This option
           is only meaningful when building a shared object.

     -z interpose
           Marks the object as an interposer. When  direct  bind-
           ings are in effect (see -B direct), the runtime linker
           will search for symbols in any interposers before  the
           object associated to the direct binding.

     -z lazyload | nolazyload
           Enables or disables the marking of  dynamic  dependen-
           cies  to  be lazily loaded. Dynamic dependencies which
           are marked lazyload will not be loaded at initial pro-
           cess  start-up,  but instead will be delayed until the
           first binding to the object is made. Note: Lazy  load-
           ing  can  require the correct declaration of dependen-
           cies and associated runpaths for each  dynamic  object
           used  within a process. See Linker and Libraries Guide
           for more details.

     -z ld32=arg1,arg2,...

     -z ld64=arg1,arg2,...
           The class of the link-editor is affected by the  class
           of  the output file being created and by the capabili-
           ties of the underlying operating system.  This  option
           provides a means of defining any link-editor argument,
           such that it will only be  interpreted,  respectively,
           by the 32- or 64-bit class of the link-editor.

           For example, support libraries are class specific,  so
           the  correct  class  of support library can be insured
           using:

           ld ... -z ld32=-Saudit32.so.1 -z ld64=-Saudit64.so.1 ...

           Note: The class of  link-editor  invoked  is  in  part
           determined from the ELF class of the first input relo-
           catable file seen on the command line. This determina-
           tion is carried out prior to any -z ld[32|64] process-
           ing.

     -z loadfltr
           Marks the object  to  require  that  when  building  a
           filter,  its  filtees be processed immediately at run-
           time. Normally, filter processing is delayed  until  a
           symbol  reference  is bound to the filter. The runtime
           processing of an object that contains this flag mimics
           that which occurs if the LD_LOADFLTR environment vari-
           able is in effect. See ld.so.1(1).

     -z muldefs
           Allows multiple symbol definitions. By default, multi-
           ple  symbol definitions that occur between relocatable
           objects will result in a fatal error  condition.  This
           option  suppresses  the error condition and allows the
           first symbol definition to be taken.

     -z nocompstrtab
           Disables the compression of ELF string tables.

     -z nodefaultlib
           Marks the object so that the runtime  default  library
           search  path  (used  after any LD_LIBRARY_PATH or run-
           paths) is ignored. This option implies that all depen-
           dencies  of  the object can be satisfied from its run-
           path.

     -z nodelete
           Marks the object as non-deletable at runtime. The run-
           time  processing  of an object that contains this flag
           mimics that which occurs if the object is added  to  a
           process using dlopen(3DL) with the RTLD_NODELETE mode.

     -z nodlopen
           Marks the object  as  not  available  to  dlopen(3DL),
           either  as the object specified by the dlopen(), or as
           any form of dependency required by the  object  speci-
           fied  by  the dlopen(). This option is only meaningful
           when building a shared object.

     -z nodump
           Marks the object as not available to dldump(3DL).

     -z nopartial
           If there are any partially initialized symbols in  the
           input relocatable object files, the partially initial-
           ized symbols are expanded when the output file is gen-
           erated.

     -z noversion
           Does not record any versioning sections.  Any  version
           sections  or  associated .dynamic section entries will
           not be generated in the output image.

     -z now
           Marks the object  to  override  the  runtime  linker's
           default  mode  and  require  non-lazy runtime binding.
           This is similar to adding the object to the process by
           using  dlopen(3DL)  with the RTLD_NOW mode, or setting
           the LD_BIND_NOW environment variable  in  effect.  See
           ld.so.1(1).

     -z origin
           Marks the object as requiring immediate  $ORIGIN  pro-
           cessing at runtime. This option is only maintained for
           historic compatibility, as  the  runtime  analysis  of
           objects  to  provide  for  $ORIGIN  processing  is now
           default.

     -z preinitarray=function
           Appends an entry to the .preinitarray section  of  the
           object  being  built.  If  no .preinitarray section is
           present, one is created. The new entry is  initialized
           to  point  to function. See Linker and Libraries Guide
           for more details.

     -z redlocsym
           Eliminates all local symbols except for the SECT  sym-
           bols from the symbol table SHT_SYMTAB. All relocations
           that refer to local symbols will be updated  to  refer
           to the corresponding SECT symbol.

     -z rescan
           Rescans the archive files provided to  the  link-edit.
           By default, archives are processed once as they appear
           on the command line. Archives are traditionally speci-
           fied at the end of the command line so that their sym-
           bol definitions resolve any preceding references. How-
           ever,  it  is  often necessary to specify the archives
           multiple times to satisfy their own interdependencies.

           The -z rescan option causes the entire archive list to
           be  reprocessed  in  an  attempt  to locate additional
           archive members that resolve symbol  references.  This
           archive  rescanning  continues  until  a pass over the
           archive list  occurs  in  which  no  new  members  are
           extracted.

     -z text
           In dynamic mode only, forces  a  fatal  error  if  any
           relocations against non-writable, allocatable sections
           remain. For historic reasons, this is not the  default
           when building an executable or shared object. However,
           its use is recommended to insure that the text segment
           of the dynamic object being built is shareable between
           multiple running processes, and that the object incurs
           the least relocation overhead when loaded into memory.

     -z textoff
           In dynamic mode only, allows relocations  against  all
           allocatable  sections,  including  non-writable  ones.
           This is the default when building a shared object.

     -z textwarn
           In dynamic mode only, lists a warning if  any  reloca-
           tions   against   non-writable,  allocatable  sections
           remain. This is the default when building  an  execut-
           able.

     -z verbose
           This option provides  additional  warning  diagnostics
           during a link-edit. Presently, its implementation con-
           veys suspicious use of displacement  relocations,  but
           in  future  it  may  be enhanced to provide additional
           diagnostics  deemed  too  noisy  to  be  generated  by
           default.


ENVIRONMENT VARIABLES

     LD_LIBRARY_PATH
           A list of directories in which to search for libraries
           specified with the -l option. Multiple directories are
           separated by a colon. In the  most  general  case,  it
           will  contain two directory lists separated by a semi-
           colon:

           dirlist1;dirlist2

           If ld is called with any number of occurrences of  -L,
           as in:

           ld ... -Lpath1 ... -Lpathn ...

           then the search path ordering is:

           dirlist1 path1 ... pathn dirlist2 LIBPATH

           When the  list  of  directories  does  not  contain  a
           semicolon, it is interpreted as dirlist2.

           The LD_LIBRARY_PATH environment variable also  affects
           the  runtime  linkers  searching for dynamic dependen-
           cies.

           This environment variable can be specified with a  _32
           or  _64  suffix.  This  makes the environment variable
           specific, respectively, to 32-bit or 64-bit  processes
           and overrides any non-suffixed version of the environ-
           ment variable that may be in effect.

     LD_NOEXEC_64
           Suppresses  the  automatic  execution  of  the  64-bit
           link-editor.  By default, the link-editor will execute
           its 64-bit version when the ELF  class  of  the  first
           input  relocatable  file  it  reads identifies it as a
           64-bit object. Although there are some limitations  to
           the 64-bit image that a 32-bit link-editor can create,
           some link-edits may find using the 32-bit  link-editor
           faster.

     LD_OPTIONS
           A default set of options to ld. LD_OPTIONS  is  inter-
           preted  by ld just as though its value had been placed
           on the command line, immediately  following  the  name
           used to invoke ld, as in:

           ld $LD_OPTIONS ... other-arguments ...

     LD_RUN_PATH
           An alternative mechanism for specifying a  runpath  to
           the   link-editor.   See   the   -R  option.  If  both
           LD_RUN_PATH and the -R option are specified, -R super-
           sedes.

     SGS_SUPPORT
           Provides a colon-separated list of shared objects that
           are  loaded with the link-editor and given information
           regarding the linking process. This environment  vari-
           able  can  be specified with a _32 or _64 suffix. This
           makes the environment variable specific, respectively,
           to  the 32-bit or 64-bit class of ld and overrides any
           non-suffixed version of the environment variable  that
           may be in effect. See also the -S option.

     Notice that environment variable-names  beginning  with  the
     characters  'LD_'  are reserved for possible future enhance-
     ments to ld and ld.so.1(1).


FILES

     libx.so
           shared object libraries.

     libx.a
           archive libraries.

     a.out default output file.

     LIBPATH
           /usr/lib for 32-bit libraries, or /usr/lib/64 for  64-
           bit libraries.

     /usr/lib/ld/map.bssalign
           mapfile providing a template for aligning bss.

     /usr/lib/ld/map.default
           mapfile showing default layout of 32-bit programs.

     /usr/lib/ld/map.noexstk
           mapfile showing a non-executable stack definition.

     /usr/lib/ld/sparcv9/map.default
           mapfile showing default layout of 64-bit SPARCV9  pro-
           grams.

     /usr/lib/ld/sparcv9/map.above4G
           mapfile showing suggested layout above 4 gigabytes  of
           64-bit SPARCV9 programs.

     /usr/lib/ld/sparcv9/map.below4G
           mapfile showing suggested layout below 4 gigabytes  of
           64-bit SPARCV9 programs.


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWtoo                     |
    |_____________________________|_____________________________|


SEE ALSO

     as(1),  crle(1),  gprof(1),  ld.so.1(1),  pvs(1),   exec(2),
     stat(2),  dlopen(3DL),  dldump(3DL),  elf(3ELF),  ar(3HEAD),
     a.out(4), attributes(5)

     Linker and Libraries Guide


NOTES

     Default options applied by ld are  maintained  for  historic
     reasons.  In  today's programming environment, where dynamic
     objects dominate, alternative defaults would often make more
     sense.  However,  historic  defaults  must  be maintained to
     insure  compatibility  with  existing  program   development
     environments. Historic defaults are called out wherever pos-
     sible in this manual. For a description  of  current  recom-
     mended  options,  see the ``Link-Editor Quick Reference'' in
     the Linker and Libraries Guide.

     If the file being created by ld already exists, it  will  be
     truncated  after  all  input  files  have been processed and
     overridden with the new file contents. ld does not create  a
     temporary  file  as  part  of  the link-edit, since multiple
     instances of large output files  frequently  exhaust  system
     resources.  The  drawback  of  overriding  an  existing file
     occurs if the file is in use by a running process.  In  this
     case,  the process may be prematurely terminated as the out-
     put files image is created. This situation can be avoided by
     removing  the  output  file before performing the link-edit.
     This removal is not detrimental to the running  process,  as
     it  frees  up the file system namespace, not the actual disk
     space, for the new output file creation. The disk space of a
     removed  file is freed when the last process referencing the
     file terminates.


Man(1) output converted with man2html