The final executable is produced by linking the object files of the program, the C library, the compiler support library and the crt0 stub object. The scripts provided in the ABLE C library package perform this linkage and final object copying to obtain the final binary file which ABLE can execute.
The program objects are obviously generated by the application, standard ELF format intermediate objects are used for this. Indeed the whole process generates a normal ARM ELF object (with specific properties) which is then flattened.
The C library provides generic support functionality to every C program and wrappers the calls to ABLE functionality in a standard API.
The compiler support library is required to provide functions which the compiler itself emits.
The crt0 stub object is the code which sets up the execution environment from that passed by ABLE in a manner suitable for use by the compiled C program.