In order to initialize the libraries correctly before starting the execution of the application code, the program entry point must be set to _start. After the initialization of libraries is completed, _start calls the _main routine which initializes variables in C++ programs. The main() routine is then called.
The _main routine manages any double calling at program initialization; some C++ compilers force a call to _main at the beginning of main().
Depending on the development system, it may be necessary to use specific linker directives to force the linker to extract the _start and _main routines from the libraries.