When applications grow large, they are usually broken into smaller, manageable pieces called compilation units. Each piece is compiled separately, then the pieces are stitched together by the linker to produce the final application.

When you partition a application into separate compilation units, you will need to indicate how a symbol defined in one unit is referenced by the code in other units. This section will show how to declare exported and imported symbols that can be used in more than one unit.

When building applications, you often find pieces of code that can be reused in other applications. Rather than duplicating such source code, you can package these units into a library.

The CrossWorks tools were designed to be flexible and let you to easily write space-efficient programs using libraries and separate compilation. To that end, the assembler-and-linker combination provides a number of features not found in many compilation systems.