Unix linking for backwards compatibility

Unfortunately most Unix systems are only forwards compatible. This means that if you link on a current version your program may not run on a older version of the operating system. However if you link against the older version shared objects your program will run on the old version and the new current version(s). There are two ways to deal with this. Keep old installations of the operating system, or copy the shared objects from old operating system installations. These old objects are not executed. They only exist to use for linking. Therefore they should not exist in any operating system or application shared object execution directory.

Implicit Unix shared objects

For the environment to be able to find the shared object files for linking you need to setup the LIB/SO environment Directories option. Normally this option is left blank on a "native" system, but it is necessary for cross development. It is only necessary to add this directory to the RTL project. All projects which import the RTL project will find the shared objects via RTL project.

Tip: The runtime library build script automatically handles cross linking by looking for the libc.so shared object in a specific directory within the install directory. If the file is found then the directory is added to the LIB/SO directory option.

crosslink\linux - this directory contains the Linux shared object files

crosslink\sunos - this directory contains the SunOS/Solaris shared object files.

This is the mechanism we use to link our executables so that they run on older and new version of the Linux or Solaris operating systems.