next up previous contents
Next: Programs Up: Generated code Previous: Generated code

Units

  When you compile a unit, the Free Pascal compiler generates 2 files :

  1. A unit description file (with extension .ppu, or .ppw on WINDOWSNT).
  2. An assembly language file (with extension .s).
The assembly language file contains the actual source code for the statements in your unit, and the necessary memory allocations for any variables you use in your unit. This file is converted by the assembler to an object file (with extension .o) which can then be linked to other units and your program, to form an executable.

By default (compiler version 0.9.4 and up), the assembly file is removed after it has been compiled. Only in the case of the -s command-line option, the assembly file must be left on disk, so the assembler can be called later. You can disable the erasing of the assembler file with the -a switch.

The unit file contains all the information the compiler needs to use the unit:

  1. Other used units, both in interface and implementation.
  2. Types and variables from the interface section of the unit.
  3. Function declarations from the interface section of the unit.
  4. Some debugging information, when compiled with debugging.
  5. A date and time stamp.
Macros, symbols and compiler directives are not saved to the unit description file. Aliases for functions are also not written to this file, which is logical, since they cannot appear in the interface section of a unit.

The detailed contents and structure of this file are described in the first appendix. You can examine a unit description file using the dumpppu program, which shows the contents of the file.

If you want to distribute a unit without source code, you must provide both the unit description file and the object file.

You can also provide a C header file to go with the object file. In that case, your unit can be used by someone who wishes to write his programs in C. However, you must make this header file yourself since the Free Pascal compiler doesn't make one for you.


next up previous contents
Next: Programs Up: Generated code Previous: Generated code

Michael Van Canneyt
Thu Sep 10 14:04:11 CEST 1998