Linker and Libraries Guide

Link-Editing

Link-editing takes a variety of input files, typically generated from compilers, assemblers, or ld(1). The link-editor concatenates and interprets the data within these input files to form a single output file. Although the link-editor provides numerous options, the output file that is produced is one of four basic types.

These output files, and the key link-editor options used in their creation, are shown in Figure 1–1.

Dynamic executables and shared objects are often referred to jointly as dynamic objects. Dynamic objects are the main focus of this document.

Figure 1–1 Static or Dynamic Link-Editing

Link-editor output files, and the key link-editor options used to create them.

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.

Beginning with the Solaris 10 release, the OS no longer includes 32–bit system archive libraries. Without these libraries, specifically libc.a, the creation of a static executable is no longer achievable without specialized system knowledge. Note, that the link-editors ability to process static linking options, and the processing of archive libraries, remains unchanged.