When building an application without the C library, if you
create an application that includes a
the linker automatically includes the initialization code necessary
for the execution environment. There are situations where this is
not desirable or possible. For example, a system running a Real-Time
Operating System (RTOS) might have its execution environment configured
by the RTOS startup code.
You can create an application that consists of customized startup code and still use many of the library functions. You must either:
Avoid functions that require initialization.
Provide the initialization and low-level support functions.