Solving undefined symbol __main_stack_size__ in ChibiOS 3.x
Problem:
When trying to compile ChibiOS 3.x you get one of these error messages during the linking stage:
undefined symbol `__main_stack_size__' referenced in expression
undefined symbol `__process_stack_size__' referenced in expression
Solution
In constrast to ChibiOS 2.x, the ChibiOS 3.x linker scripts do not contain the stack size definitions. If you are using a custom build system, you need to add these linker flags, e.g. by setting the LDFLAGS
environment variable:
-Wl,--defsym=__process_stack_size__=0x400 -Wl,--defsym=__main_stack_size__=0x400
The value 0x400
(1024) is the default makefile value in ChibiOS at the time of writing this. You can also use custom appropriate values if desired. It it likely that this is the reason that the externally-defined linker-variable based approach was chosen for ChibiOS 3.x in the first place.