dld.sl.5 (2011 09)
d
dld.sl(5)
PA-RISC Systems Only
dld.sl(5)
If either SHLIB_PATH or LD_LIBRARY_PATH
is set, and neither contains any path listed in the
conf
file, all dynamic path lookup is disabled. The paths from the
config file are not a fallback.
The following is a sample configuration file:
# need this for some GNU and shared apps
/usr/local/lib:/nfs/appserver/lib
# path below is ignored: path not starting with ’/’
# and loader will not expand ˜ etc.
~wizkid/lib
# second path below ignored: space
/user/ipfguru/lib/hpux32: user/ipfguru/lib/hpux64
/net/appserv2/local/lib # ignored:line starting with space
/opt/java1.3/jre/lib/PA_RISC2.0/ # java 1.3 PA32
/opt/java1.3/jre/lib/PA_RISC2.0/server # java 1.3 PA32
/opt/java1.3/jre/lib/PA_RISC2.0W/
# java 1.4
/opt/java1.4/jre/lib/PA_RISC2.0/:/opt/java1.4/jre/lib/PA_RISC2.0/server
/opt/java1.4/jre/lib/PA_RISC2.0W/:/opt/java1.4/jre/lib/PA_RISC2.0W/server
DIAGNOSTICS
If the dynamic loader is not present, or cannot be invoked by the process for any reason, an error message
is printed to standard error and the process terminates with a non-zero exit code.
These errors fall into two basic categories: errors in attaching a shared library, and errors in binding
symbols. The former can occur only at process startup time but the latter can occur at any time during
process execution unless the
-B immediate option is used with ld. Possible errors that can occur
while attaching a shared library include library not present, library not executable, library corrupt, high
water mark too low, or insufficient room in the address space for the library. Possible errors that can
occur while binding symbols include symbol not found (unresolved external), or library corrupt.
When using the explicit load facilities of the dynamic loader, these types of errors are not considered
fatal. Consult shl_load (3X), dlclose (3C), dlget(3C), dlgetname (3C), dlmodinfo (3C), dlopen (3C), and
dlsym(3C) for more information. On PA-RISC 64-bit systems, to see error messages, use the
dlerror()
routine. This routine will print the last error message recorded by the dynamic loader.
WARNINGS
The startup cost of the dynamic loader is significant, even with deferred binding, and can cause severe
performance degradation in processes dominated by startup costs (such as simple ‘‘hello world’’ pro-
grams). In addition, position-independent code is usually slower than normal code, so performance of a
program may be adversely affected by the presence of PIC in shared libraries. However, the advantages
of decreased disk space usage and decreased memory requirements for executables should outweigh these
concerns in most cases.
There are rare cases where the behavior of a program differs when using shared libraries as opposed to
archive libraries. This happens primarily when relying on undocumented and unsupported features of
the compilers, assembler, and linker.
See the
+help option to ld(1) or the HP-UX Linker and Libraries User’s Guide manual for more details.
The library developer is entirely responsible for version control and must be thorough in identifying
incompatible changes to library interfaces. Otherwise, programs may malfunction unexpectedly with
later versions of the library. There is little an application user can do if version control is not handled
properly by the library developer. The application developer can usually resolve problems by modifying
the source code to use the new interfaces then recompiling and relinking against the new libraries.
By default, most warnings are not reported by the dynamic loader.
On PA-RISC 32-bit systems, if you wish to see all of the messages, set the environment variable
_HP_DLDOPTS to contain one or more options. The following options are supported:
HP-UX 11i Version 3: September 2011 − 7 − Hewlett-Packard Company 7