Oracle® Solaris 11.2 Linkers and Libraries Guide

Exit Print View

Updated: July 2014
 
 

System Specific Shared Objects

The dynamic tokens $OSNAME, $OSREL, $PLATFORM and $MACHINE are expanded at runtime to provide system specific information. These tokens are available for filters, runpath, or dependency 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 platform name, as displayed by uname -i. $MACHINE expands to reflect the underlying machine hardware name, as displayed by uname -m.

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 /platform/$PLATFORM/lib/libbar.so.1' \
    cc -o libfoo.so.1 -G -K pic -h libfoo.so.1 -R. foo.c
$ elfdump -d libfoo.so.1 | egrep 'SONAME|AUXILIARY'
     [2]  SONAME             0x1                libfoo.so.1
     [3]  AUXILIARY         0x96                /platform/$PLATFORM/lib/libbar.so.1

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