From: eLinux.org
Pre-Linking is a mechanism for linking programs to shared libraries ahead of time. In general, every time an application is run it must have its external symbols resolved - looked up in the shared library symbol table, and fixed up in the program binary to refer to the correct offsets in the library. To use prelinking, a special utility is run which does this resolution and fixup once for the program. This saves the cost of linking at runtime.
There is an existing package from RedHat which provides this feature.
A drawback of this is that if the shared library is changed, the fixups are no longer correct, and the program must be fixed-up again. This is much less of an issue in an embedded situation, where the programs and libraries are less likely to change than in a desktop or server Linux system.
There is an excellent paper with an overview of dynamic linking issues at: Pre Linking Overview This paper describes not only pre-linking, but lazy linking and more exotic systems, like compile-on-load.
[This is not measured yet.]
We expect that with use of prelinking, there will be a slight reduction in boot time for Linux system, in the area of initial application loading.
We need to use this system and measure the effect of prelinking for a determined set of applications.
prelink currently supports the following architectures: alpha, arm, cris, i386, ia64, ppc32, ppc64, s390, sh, sparc32, sparc64, x86_64. At present the glibc dynamic linker is required to prelink executables and load prelinked code, uClibc does not support it.
The following page has information on how to use prelinking with a Gentoo system:
http://www.gentoo.org/doc/en/prelink-howto.xml
http://mail-index.netbsd.org/tech-userlevel/2002/12/01/0000.html
http://www.shiningsilence.com/dbsdlog/2004/01/20/215.html
None so far.
No kernel patches required for kernels 2.4.10 and later.
Panasonic used pre-linking on their Linux-based mobile phones. These used a 2.4.x Linux kernel, for an ARM processor. Measuring the time to load a single multimedia application with regular dynamic linking and pre-linking, showed that pre-linking could save a lot of time.
This item is a work-in-progress, and we are just getting started.