Building and Installing Software Packages for Linux: Backward Compatibility With a.out Binaries

Next Previous Contents

## 6. Backward Compatibility With a.out Binaries

In a very few cases, it is necessary to use a.out binaries, either because the source code is not available or because it is not possible to build new ELF binaries from the source for some reason.

As it happens, ELF installations almost always have a complete set of a.out libraries in the `/usr/i486-linuxaout/lib` directory. The numbering scheme for a.out libraries differs from that of ELF ones, cleverly avoiding conflicts that could cause confusion. The a.out binaries should therefore be able to find the correct libraries at runtime, but this might not always be the case.

Note that the kernel needs to have a.out support built into it, either directly or as a loadable module. It may be necessary to rebuild the kernel to enable this. Moreover, some Linux distributions require installation of a special compatibility package, such as Debian's `xcompat` for executing a.out X applications.

## 6.1 An Example

Jerry Smith wrote a very handy rolodex program some years back. It uses the Motif libraries, but fortunately is available as a statically linked binary in a.out format. Unfortunately, the source requires numerous tweaks to rebuild using the lesstif libraries. Even more unfortunately, the a.out binary bombs on an ELF system with the following error message.

> `

>     xrolodex: can't load library '//lib/libX11.so.3'
>     No such library

> `

As it happens, there is such a library, in `/usr/i486-linuxaout/lib`, but xrolodex is unable to locate it at run time. The simple solution is to provide a symbolic link in the `/lib` directory:

`ln -s /usr/i486-linuxaout/lib/X11.so.3.1.0 libX11.so.3`

It turns out to be necessary to provide similar links for the libXt.so.3 and libc.so.4 libraries. This needs to be done as root, of course. Note that you should make absolutely certain you will not overwrite or cause version number conflicts with pre-existing libraries. Fortunately, the new ELF libraries have higher version numbers than the older a.out ones, to anticipate and forestall just such problems.

After creating the three links, xrolodex runs fine.

The xrolodex package was originally posted on Spectro, but seems to vanished from there. It may currently be downloaded from Sunsite as a tar.Z format source file [512k].

Next Previous Contents