HP-UX Reference (11i v2 07/12) - 5 Miscellaneous (vol 9)

d
dld.so(5)
Itanium(R)-based Systems Only
dld.so(5)
path appears only once in the file (and also in the options
SHLIB_PATH and LD_LIBRARY_PATH
). The
conf file should be writeable only by
root. Otherwise, the loader does not use its contents. If
/etc/dld/sl.conf
does not exist or has the wrong permissions, all dynamic path lookup is disabled.
Any relative paths (paths not starting with slash (
/) in the path list are ignored by the loader.
NOTE: Spaces are not allowed in the paths listed. Everything on a line that follows a space or
# character
is ignored. You can use
#
to comment out paths in the file.
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 sym-
bols. 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 attach-
ing 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. To see error messages, use the
dlerror() routine. This routine prints 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 per-
formance degradation in processes dominated by startup costs (such as simple ‘‘hello world’’ programs). 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 for more details.
The library developer is entirely responsible for version control and must be thorough in identifying incom-
patible changes to library interfaces. Otherwise, programs may malfunction unexpectedly with later ver-
sions of the library. There is little an application user can do if version control is not handled properly by
124 Hewlett-Packard Company 6 HP-UX 11i Version 2: December 2007 Update