Installation guide

6.3.3 The Linker
In most instances, you can use the compiler to link separate application
object files into a single executable application.
As part of the compilation process, compiler drivers call the linker, ld,to
combine one or more object files into a single application object file. The
linker’s operation is essentially similar on the two systems; the most
important difference is that by default the DIGITAL UNIX linker links
with shared libraries; the ULTRIX system does not support shared
libraries. The DIGITAL UNIX linker resolves external references, searches
libraries, and performs all other processing required to create object files
that are ready for execution. The resulting object module can either be
executed or can serve as input to a separate ld command. (You can invoke
the linker separately from the compiler by entering the ld command.)
The DIGITAL UNIX linker also supports C++ automatic constructors and
destructors, and new options.
On DIGITAL UNIX systems, you normally use the linker to create shared
libraries. For information about using and creating shared libraries, see
Chapter 8. To link your application with shared libraries, use the
appropriate compiler driver. To inhibit linking with shared libraries, use
the driver’s -non_shared option.
Because the DIGITAL UNIX environment is a 64-bit environment, the
linker, by default, loads the program text and data in the high 64-bit
virtual address space of the process (between 0xFFFFFFFFFFFFFFFF and
0x0000000100000000). As a result, there are no addresses accessible with a
32-bit address. If your source code contains any unintended pointer
truncations, they will trap into the kernel and cause a run-time error. You
can change this default behavior by using the T or D options to change
the text and data segment origin, respectively.
6.3.4 The Debugger
The primary debugging tool on DIGITAL UNIX systems is dbx, which is a
source-level debugger. This debugger is the same tool that is available on
ULTRIX systems, and you can use it the same as you used the ULTRIX
dbx. The differences between the DIGITAL UNIX and ULTRIX versions of
dbx are that the DIGITAL UNIX debugger has been enhanced to support
debugging applications that are linked with shared libraries.
The ULTRIX window interface to dbx, which is dxdb, is not supplied on
DIGITAL UNIX systems. If you develop software in a window environment,
you can purchase and install the DEC FUSE product. DEC FUSE is a
software development, analysis, and maintenance environment for
6–8 Overview of the DIGITAL UNIX Programming Environment