Prebinding Applications

In Mac OS X v10.3.3 and earlier, when a Mach-O–based executable is launched, the dynamic link editor (or dynamic linker) loads the symbols that the executable imports at predetermined addresses in the executable’s address space. Prebinding is the process of computing the addresses for the imported symbols, so that the dynamic linker needs to perform less work at launch time. In other words, the launch time of an executable is optimized when these precomputed addresses contain valid data. With outdated prebinding information, an executable takes longer to load. The dynamic linker Mac OS X v10.3.4 and later is implemented in a way that makes prebinding unnecessary. But applications that need to run in earlier versions of Mac OS X may benefit from having their prebinding information up to date.

When you build an application targeted at Mac OS X versions earlier than v10.3.4, the addresses of its imported symbols are computed using the SDK you choose for the project. For example, an application built using the 10.2.8 SDK that is installed on a computer running Mac OS X v10.2.3 would need to have its prebinding information recomputed in order to optimize its launch time. In managed installs, the Installer application automatically performs this update. In manual installs, however, you must perform this task.

The update_prebinding(1) command-line tool updates an executable’s prebinding information. To optimize the launch time of a manually installed application, users need to run this tool after installing an application. You can provide instructions for how to run this tool in a Read Me file, printed documentation, or other mechanism.

For more information on prebinding, see Launch Time Performance Guidelines.