When we came to build the USSC under Solaris 2.4, it quickly became apparent that the simple strategy for linking with the X libraries employed under Solaris 2.3 and on other platforms didn’t work. Changes under Solaris 2.4 meant that various of the X libraries are interdependent on each other.
This is fine using the default dynamic linking — the linker is capable of resolving such dependencies. However, for static linking, the norm for Starlink applications, the linker cannot successfully resolve such dependencies.
One way round this problem is to specify the libraries concerned twice each in the chain of libraries for linking. However, because of the way the Starlink link scripts work, it is not possible to do this — multiple occurrences of library names are removed to shorten the number of linker arguments.
STARX resolves the problem by using alias names for the additional occurrences for the libraries concerned.
The port of the USSC to Linux on Intel PCs required another ‘fix’ to accommodate X Library linking.
Under Linux systems, the X Libraries are in a different place than on most Unix systems, and are not searched automatically by the linker.
The Linux version of STARX provides the path for the linker to find the X libraries, in addition to the name of the library required.