This form may be used to access the UNIX man pages. Note this form runs on a Solaris machine, so the results may disagree with other operating system implementations of the commands.
ld - link-editor for object files
/usr/ccs/bin/ld [-64] [-a | -r] [-b] [-c name] [-C]
[-G] [-i] [-m] [-s] [-t] [-V] [-Bdirect | nodirect]
[-B dynamic | static]
[-B group] [-B local] [-B eliminate]
[-B reduce] [-B symbolic] [-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 globalaudit] [-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 noldynsym]
[-z nopartial] [-z noversion] [-z now] [-z origin]
[-z preinitarray=function] [-z redlocsym] [-z rescan]
[-z text | textwarn | textoff] [-z verbose] filename...
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 that are pro-
vided as arguments are combined to produce a static execut-
able file. If the -r option is specified, relocatable object
files are combined to produce one relocatable object file.
See Static Executables.
In dynamic mode, -dy, the default, relocatable object files
that are provided as arguments are combined to produce an
executable object file. This file is linked at execution
with any shared object files that are provided as arguments.
If the -G option is specified, relocatable object files are
combined to produce a shared object.
If any argument is a library, ld by default searches the
library exactly once at the point the library is encountered
on the argument list. The library can be either a shared
object or relocatable archive. See ar.h(3HEAD)).
For an archive library, ld loads only those routines that
define an unresolved external reference. ld searches the
symbol table of the archive library sequentially to resolve
external references that can be satisfied by library
members. This search is repeated until no external refer-
ences can be resolved by the archive. 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 can
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
objects or 64-bit objects. The link-editor uses the ELF
class of the first relocatable object file that is found on
the command line, to govern the mode in which to operate.
The mixing of 32-bit objects and 64-bit objects is not per-
mitted. See also the -64 option and the LD_NOEXEC_64
environment variable.
Static Executables
The creation of static executables has been discouraged for
many releases. In fact, 64-bit system archive libraries have
never been provided. Because a static executable is built
against system archive libraries, the executable contains
system implementation details. This self-containment has a
number of drawbacks.
o The executable is immune to the benefits of system
patches delivered as shared objects. The executable
therefore, must be rebuilt to take advantage of
many system improvements.
o The ability of the executable to run on future
releases can be compromised.
o The duplication of system implementation details
negatively affects system performance.
With Solaris 10, 32-bit system archive libraries are no
longer provided. Without these libraries, specifically
libc.a, the creation of static executables is no longer
achievable without specialized system knowledge. Note, that
the link-editors capability to process static linking
options, and the processing of archive libraries, remains
unchanged.
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 an archive library or a mapfile.
See the -M option.
-a
In static mode only, produces an executable object file.
Undefined references are not permitted. This option is
the default behavior for static mode. -a can not be used
with the -r option. See Static Executables under
DESCRIPTION.
-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 func-
tions defined in shared objects. In addition, the link-
editor arranges for data objects that are defined in
shared objects to be copied into the memory image of an
executable at runtime.
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 can even prevent the relo-
cation of 64-bit executables.
-B direct | nodirect
Options governing direct binding. -B direct establishes
direct binding information by recording the relationship
between each symbol reference and the dependency that
provides the definition. In addition, direct binding
information is established between each symbol reference
and an associated definition within the object being
created. The runtime linker uses this information to
search directly for a symbol in the associated object
rather than to carry out a 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 symbols in a direct binding environment
should identify themselves as interposers with the -z
interpose option. The use of -B direct enables -z lazy-
load for all dependencies.
-B nodirect prevents any direct binding to the inter-
faces offered by the object being created. The object
being created can continue to directly bind to external
interfaces by specifying the -z direct option.
-B dynamic | static
Options governing library inclusion. -B dynamic is valid
in dynamic mode only. These options can be specified any
number of times on the command line as toggles: if the
-B static option is given, no shared objects are
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. Ver-
sion definitions can be supplied by means of a mapfile
to indicate the global symbols that should remain visi-
ble in the generated object. This option achieves the
same symbol elimination as the auto-elimination direc-
tive that is available as part of a mapfile version
definition. This option can be useful when combining
versioned and non-versioned relocatable objects. See
also the -B reduce option.
-B group
Establishes a shared object and its dependencies as a
group. Objects within the group are bound to other
members of the group at runtime. The runtime processing
of an object containing this flag mimics that which
occurs if the object is added to a process using
dlopen(3C) with the RTLD_GROUP mode. An object that has
an explicit dependency on a object identified as a
group, becomes 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 definitions
can be supplied by means of a mapfile to 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 that is avail-
able as part of a mapfile version definition. This
option can be useful when combining versioned and non-
versioned relocatable objects. See also the -B eliminate
option.
-B reduce
When generating a relocatable object, causes the reduc-
tion of symbolic information defined by any version
definitions. Version definitions can be supplied by
means of a mapfile to indicate the global symbols that
should remain visible in the generated object. By
default, when a relocatable object is generated, version
definitions are only recorded in the output image. The
actual reduction of symbolic information is carried out
when the object is used in the construction of a dynamic
executable or shared object. This option is applied
automatically when a dynamic executable, or shared
object is created.
-B symbolic
In dynamic mode only. When building a shared object,
binds references to global symbols to their definitions,
if available, within the object. Normally, references to
global symbols within shared objects are not bound until
runtime, even if definitions are available. This model
allows definitions of the same symbol in an executable
or other shared object to override the object's own
definition. ld issues 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 recommended.
-c name
Records the configuration file name for use at runtime.
Configuration files can 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 mes-
sages.
-d y | n
When -d y, the default, is specified, ld uses dynamic
linking. When -d n is specified, ld uses static linking.
See Static Executables under DESCRIPTION, and -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
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 can 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 speci-
fied by name. Multiple instances of this option are
allowed. This option can 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 is
recorded in any dynamic objects that are linked with
this object rather than the object's file system name.
Accordingly, name is 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 runtime
linker, ld.so.1(1). Either case can be overridden by -I
name. exec(2) loads this interpreter when the a.out is
loaded, and passes control to the interpreter rather
than to the 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 containing
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 the library is encountered, so the place-
ment of -l is significant.
-L path
Adds path to the library search directories. ld searches
for libraries first in any directories specified by the
-L options and then in the standard directories. This
option is useful only if the option precedes the -l
options to which the -L option applies. The environment
variable LD_LIBRARY_PATH can be used to supplement the
library search path. See LD_LIBRARY_PATH under ENVIRON-
MENT VARIABLES.
-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 can be specified multiple times. If mapfile is a
directory, then all regular files, as defined by
stat(2), within the directory are processed. See the
Linker and Libraries Guide for a description of map-
files. Example mapfiles are provided in /usr/lib/ld. See
FILES.
-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 is the string that is specified on
the command line. This option is position dependent, and
the DT_NEEDED .dynamic entry is relative to the other
dynamic dependencies discovered on the link-edit line.
This option is useful for specifying dependencies within
device driver relocatable objects when combined with the
-dy and -r options.
-o outfile
Produces an output object file that is named outfile.
The name of the default object file is a.out.
-p auditlib
Identifies an audit library, auditlib. This audit
library is used to audit the object being created at
runtime. A shared object identified as requiring audit-
ing with the -p option, has this requirement inherited
by any object that specifies the shared object as a
dependency. See the -P option.
-P auditlib
Identifies an audit library, auditlib. This audit
library is used to audit the dependencies of the object
being created at runtime. Dependency auditing can also
be inherited from dependencies that are identified as
requiring auditing. See the -p option.
-Q y | n
Under -Q y, an ident string is added to the .comment
section of the output file. This string identifies the
version of the link-editor used to create the file. This
results in multiple ld idents when there have been mul-
tiple linking steps, such as when using ld -r. This
identification 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 does 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, the path 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. Note, the
elimination of a SHT_SYMTAB symbol table can compromise
the .stab* debugging information that is generate using
the compiler drivers -g option. See the -z redlocsym
option.
-S supportlib
The shared object supportlib is loaded with the link-
editor and given information regarding the linking pro-
cess. Support shared objects can also be supplied using
the SGS_SUPPORT environment variable. See the Linker and
Libraries Guide for more details.
-t
Turns off the warning for multiply-defined symbols that
have different sizes or different alignments.
-u symname
Enters symname as an undefined symbol in the symbol
table. This option is useful for loading entirely from
an archive library. In this instance, an unresolved
reference is needed to force the loading of the first
routine. The placement of this option on the command
line is significant. This option must be placed before
the library that defines 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 reso-
lution at runtime. In very specialized circumstances,
this option removes text relocations that can result in
excessive swap space demands by an executable.
-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 promote
tentative definitions with data definitions. Weak symbol
references do not trigger extraction. Under -z allex-
tract, 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 rela-
tionship with the sections to which the relocations must
be applied. When building an executable or shared
object, ld sorts the entries of data relocation sections
by their symbol reference. This sorting reduces the run-
time symbol lookup. Combining multiple data relocation
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 undefined
symbols remain at the end of the link. This mode is the
default when an executable is built. For historic rea-
sons, this mode is not the default when building a
shared object. Use of the -z defs option is recommended,
as this mode assures the object being built is self-
contained. A self-contained object has all symbolic
references resolved internally, or to the object's
immediate dependencies.
The -z nodefs option allows undefined symbols. For his-
toric reasons, this mode 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 coun-
terpart -B direct. The -z direct option also differs
from the -B direct option in the following areas. Direct
binding information is not established between a symbol
reference and an associated definition within the object
being created. Lazy loading is not enabled.
-z endfiltee
Marks a filtee so that when processed by a filter, the
filtee 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, a sec-
tion is created. The new entry is initialized to point
to function. See the Linker and Libraries Guide for more
details.
-z globalaudit
This option supplements an audit library definition that
has been recorded with the -P option. This option is
only meaningful when building a dynamic executable.
Audit libraries that are defined within an object with
the -P option typically allow for the auditing of the
immediate dependencies of the object. The -z globalaudit
promotes the auditor to a global auditor, thus allowing
the auditing of all dependencies. An auditor established
with the -P option and the -z globalaudit option, is
equivalent to the auditor being established with the
LD_AUDIT environment variable. See ld.so.1(1).
-z groupperm | nogroupperm
Assigns, or deassigns each dependency that follows to a
unique group. The assignment of 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 relocatable
objects that are read as part of the link-edit. By
default, -z record is in effect.
If an ELF section is ignored, the section is eliminated
from the output file being generated. A section is
ignored when three conditions are true. The eliminated
section must contribute to an allocatable segment. The
eliminated section must provide no global symbols. No
other section from any object that contributes to the
link-edit, must reference an eliminated section.
-z initarray=function
Appends an entry to the .initarray section of the object
being built. If no .initarray section is present, a sec-
tion is created. The new entry is initialized to point
to function. See the 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 occurs 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 bindings
are in effect, the runtime linker searchs for symbols in
any interposers before the object associated to the
direct binding. See -B direct.
-z lazyload | nolazyload
Enables or disables the marking of dynamic dependencies
to be lazily loaded. Dynamic dependencies which are
marked lazyload are not loaded at initial process
start-up. These dependencies are delayed until the first
binding to the object is made. Note: Lazy loading
requires the correct declaration of dependencies, and
associated runpaths for each dynamic object used within
a process. See the 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 capabilities of
the underlying operating system. This option provides a
means of defining any link-editor argument, so that the
argument is only interpreted, respectively, by the 32-
bit class 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 that is invoked is deter-
mined from the ELF class of the first input relocatable
file that is seen on the command line. This determina-
tion is carried out prior to any -z ld[32|64] process-
ing.
-z loadfltr
Marks a filter to indicate that filtees must be pro-
cessed immediately at runtime. Normally, filter process-
ing is delayed until a symbol reference is bound to the
filter. The runtime processing of an object that con-
tains this flag mimics that which occurs if the
LD_LOADFLTR environment variable is in effect. See the
ld.so.1(1).
-z muldefs
Allows multiple symbol definitions. By default, multiple
symbol definitions that occur between relocatable
objects result in a fatal error condition. This option,
suppresses the error condition, allowing the first sym-
bol 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 runpaths,
is ignored. This option implies that all dependencies of
the object can be satisfied from its runpath.
-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(3C) with the RTLD_NODELETE mode.
-z nodlopen
Marks the object as not available to dlopen(3C), either
as the object specified by the dlopen(), or as any form
of dependency required by the object specified by the
dlopen(). This option is only meaningful when building a
shared object.
-z nodump
Marks the object as not available to dldump(3C).
-z nopartial
Partially initialized symbols, that are defined within
the input relocatable object files, are expanded in the
output file being generated.
-z noversion
Does not record any versioning sections. Any version
sections or associated .dynamic section entries are not
generated in the output image.
-z now
Marks the object as requiring non-lazy runtime binding.
This mode is similar to adding the object to the process
by using dlopen(3C) with the RTLD_NOW mode, or having
the LD_BIND_NOW environment variable in effect. See the
ld.so.1(1).
-z origin
Marks the object as requiring immediate $ORIGIN process-
ing at runtime. This option is only maintained for his-
toric 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, a section is created. The new entry is initial-
ized to point to function. See the Linker and Libraries
Guide for more details.
-z redlocsym
Eliminates all local symbols except for the SECT symbols
from the symbol table SHT_SYMTAB. All relocations that
refer to local symbols are updated to refer to the
corresponding SECT symbol. This option allows special-
ized objects to greatly reduce their symbol table sizes.
Note, eliminated local symbols can compromise the .stab*
debugging information that is generate using the com-
piler drivers -g option. See the -s option.
-z rescan
Rescans the archive files that are provided to the
link-edit. By default, archives are processed once as
the archives appear on the command line. Archives are
traditionally specified at the end of the command line
so that their symbol definitions resolve any preceding
references. However, specifying archives multiple times
to satisfy their own interdependencies, can be neces-
sary.
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 relo-
cations against non-writable, allocatable sections
remain. For historic reasons, this mode 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. A shared text seg-
ment 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
mode is the default when building a shared object.
-z textwarn
In dynamic mode only, lists a warning if any relocations
against non-writable, allocatable sections remain. This
mode is the default when building an executable.
-z verbose
This option provides additional warning diagnostics dur-
ing a link-edit. Presently, this option conveys suspi-
cious use of displacement relocation. In future, this
option might be enhanced to provide additional diagnos-
tics that are deemed too noisy to be generated by
default.
LD_LIBRARY_PATH
A list of directories in which to search for the
libraries specified using the -l option. Multiple direc-
tories are separated by a colon. In the most general
case, this environment variable contains two directory
lists separated by a semicolon:
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 semi-
colon, the list is interpreted as dirlist2.
The LD_LIBRARY_PATH environment variable also affects
the runtime linkers search for dynamic dependencies.
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 is in effect.
LD_NOEXEC_64
Suppresses the automatic execution of the 64-bit link-
editor. By default, the link-editor executes the 64-bit
version when the ELF class of the first input relocat-
able file identifies a 64-bit object. The 64-bit image
that a 32-bit link-editor can create, has some limita-
tions. However, some link-edits might find the use of
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 supersedes.
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 variable
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 is in
effect. See the -S option.
Notice that environment variable-names that begin with the
characters 'LD_' are reserved for possible future enhance-
ments to ld and ld.so.1(1).
libx.so
shared object libraries.
libx.a
archive libraries.
a.out
default output file.
LIBPATH
For 32-bit libraries, the default search path is
/usr/ccs/lib, followed by /lib, and finally /usr/lib.
For 64-bit libraries, the default search path is
/lib/64, followed by /usr/lib/64.
/usr/lib/ld
A directory containing several mapfiles that can be used
during link-editing. These mapfiles provide various
capabilities, such as defining memory layouts, aligning
bss, and defining non-executable stacks.
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWtoo |
|_____________________________|_____________________________|
as(1), crle(1), gprof(1), ld.so.1(1), pvs(1), exec(2),
stat(2), dlopen(3C), dldump(3C), elf(3ELF), ar.h(3HEAD),
a.out(4), attributes(5)
Linker and Libraries Guide
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 the current
recommended options, see the Link-Editor Quick Reference in
the .
If the file being created by ld already exists, the file is
truncated after all input files have been processed. The
existing file is 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 pro-
cess. In this case, the process might be prematurely ter-
minated as the output 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 run-
ning process. The removal 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.