Linker and Libraries Guide

System Specific Shared Objects

The dynamic tokens $OSNAME, $OSREL and $PLATFORM are expanded at runtime to provide system specific information. These tokens are available for filter (DT_FILTER), auxiliary filter (DT_AUXILIARY), runpath (DT_RUNPATH), or dependency (DT_NEEDED) definitions.

$OSNAME expands to reflect the name of the operating system, as displayed by the utility uname(1) with the -s option. $OSREL expands to reflect the operating system release level, as displayed by uname -r. $PLATFORM expands to reflect the underlying hardware implementation, as displayed by uname -i.

The following example shows how the auxiliary filter libfoo.so.1 can be designed to access a platform specific filtee libbar.so.1.


$ LD_OPTIONS='-f /usr/platform/$PLATFORM/lib/libbar.so.1' \
cc -o libfoo.so.1 -G -K pic -h libfoo.so.1 -R. foo.c
$ dump -Lv libfoo.so.1 | egrep "SONAME|AUXILIARY"
  [1]    SONAME    libfoo.so.1
  [2]    AUXILIARY /usr/platform/$PLATFORM/lib/libbar.so.1

This mechanism is used in the Solaris operating environment to provide platform specific extensions to the shared object /usr/lib/libc.so.1.