Keil Logo


Information in this article applies to:

  • C166 all Versions
  • C251 all Versions
  • C51 all Versions


I have a complex project setup and my variable initialization seems to stop in the middle of my application. It seems that the initialization table end marker is incorrectly located and therefore the initialization is not fully executed.

I have also stated the C compiler run-time libraries in my project setup. When I take this out, my program runs. What is the reason for the behavior?


The linker invocation list is derived from the µVision project file list. When you state the run-time libraries in your project list, you must ensure that this is the last input file for the linker.

The C compiler run-time library contains the end marker for the variable initialization table. The linker then adds the modules in the same sequence stated in the project list. Therefore, if the library is added in the middle of your module list, then the variable end table marker is in the middle of the initialization table.

Keil recommends that you NOT add the C run-time library, since the linker automatically detects the required library and adds it as last file to the input module list.

Last Reviewed: Thursday, April 15, 2004

Did this article provide the answer you needed?
Not Sure
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.