|< Day Day Up >|
12.8. The Dynamic Linker dyld: Prebinding, the Pre-Tiger Way
Prior to Mac OS X 10.3.4, whenever you installed an update to the Mac OS X operating system, there was a long phase at the end called optimization . What the splash screen called "optimization" was a particular type of optimization, called prebinding , which applied only to Mach-O executables. The purpose of prebinding was to speed up launch times of applications.
12.8.1. Launching an Application Built Without Prebinding
Prior to Tiger when an application (or dynamic library) was built without prebinding, ld (the static linker) recorded the names of undefined symbols (i.e., the names of symbols that the application must link against). Later, when the application launched, the dynamic linker (dyld) had to bind the undefined references from the application to their definitions.
In contrast, if an executable or dynamic library was built with prebinding, the binding essentially occurred at build time. In particular, the library was predefined at a specified address range, a process that otherwise occurred when an application was launched. Rather than mark symbols as undefined, the dynamic linker could use address symbols in a prebound library to reference other application or dynamic library links against it. Additionally, if the prebound library depended on other libraries (a common situation), then the static linker recorded the timestamps of the other libraries. Later, when the prebound library was used, the dynamic linker checked the timestamps of the dependent libraries and checked for the existence of overlapping executable addresses.
If the timestamps didn't match those of the build timestamps, or if there were overlapping executable addresses, the prebinding was broken and normal binding was performed.
12.8.2. Tiger's dyld Renders Prebinding Unnecessary
The trouble with prebinding is that it slows installation time. For Mac OS X 10.3.4, dyld was overhauled to improve performance and to better support standards. In Tiger additional improvements were made to dyld so that prebinding of applications was made unnecessary. In Tiger, unprebound applications launch as fast as prebound applications. Prebinding in Tiger is deprecated.
12.8.3. Some New Features of dyld
Here are a few of dyld's new features, introduced in Tiger:
For more details on dyld, see its manpage and /Developer/ADC Reference Library/releasenotes/DeveloperTools/dyld.html.
|< Day Day Up >|