exit.c:(.text+0x18): undefined reference to `_exit’ when using arm-none-eabi-gcc

This happens when compiling a file with arm-none-eabi-gcc in one machine/architecture to load it in an ARM target machine. Most probably you are not making use of semihosting, you want to retarget.

ARM® Compiler toolchain Version 4.1 indicates:

Semihosting is a mechanism that enables code running on an ARM target to communicate and
use the Input/Output facilities on a host computer that is running a debugger.

From the toolchain’s readme.txt (under folder .../gcc-arm-none-eabi-VERSION/share/doc/gcc-arm-none-eabi):

** non-semihosting/retarget

If you are using retarget, linking like:
$ arm-none-eabi-gcc –specs=nosys.specs $(OTHER_LINK_OPTIONS)

For me --specs=nosys.specs was enough 😉

Leave a Comment