This is a prelink program. Prelinking is the process of pre-computing the load addresses and link tables generated by the dynamic linker as compared to doing this at runtime. Doing this ahead of time results in performance improvements when the application is launched.The upstream prelink project only supports running prelink on the end target device due to the reliance on the target device’s dynamic linker.
The dynamic linker performs prelinking by determining mapping addresses and associated library information. The prelink program modifies ELF-shared libraries and ELF-dynamically linked binaries by pre-assigning load addresses for each ELF object. These assignments speed up initial execution of the ELF objects. Cross-prelinking is based on the existing work of others, as documented in the “ChangeLog.cross” file. For more information see http://people.redhat.com/jakub/prelink.pdf.
The upstream prelink project only supports running prelink on the end target device due to the reliance on the target device’s dynamic linker. This restriction causes issues when developing a cross-compiled system. Thus, you will need to eventually boot up a read-write filesystem and run the prelink program to modify that filesystem.
By providing an emulated runtime dynamic linker, the cross-prelink project extends the prelink software’s ability to prelink a sysroot environment. Additionally, the cross-prelink software enables the ability to work in sysroot style environments.