proteus none for cross cortex compiler gcc arm

gcc - none - gnu arm 4.3 4



exit.c:(. text+0x18): referencia indefinida a `_exit ''cuando se usa arm-none-eabi-gcc (3)

Soy nuevo en el campo de los microcontroladores. Necesito portar un IDE que compila programas para microcontroladores AVR para compilar programas para microcontroladores ARM. Acabo de reemplazar el compilador de AVR a ARM y agregué algunas opciones tal como me las dijo alguien. El siguiente es el comando:

/ARM-GCC/bin/arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft -Wa,-adhlns="[email protected]" -fmessage-length=0 -mcpu=cortex-m0 -mthumb -g3 -gdwarf-2 -Wl, --gc-sections -o <Dir_name>/Build_Files/Blink_arm.cpp.elf <Dir_name>/Build_Files/Blink_arm.cpp.o <Dir_name>/Build_Files/core.a -L<Dir_name>/Build_Files -lm

Cuando lo ejecuto, recibo el siguiente error:

tools/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.6.2/libc.a(lib_a-exit.o): In function `exit'': exit.c:(.text+0x18): undefined reference to `_exit'' collect2: ld returned 1 exit status

¿Puedo obtener ayuda sobre qué es este error y cómo puedo resolverlo? Y tampoco sé qué especifican esas opciones en la línea de comando.


Esto ocurre al compilar un archivo con arm-none-eabi-gcc en una máquina / arquitectura para cargarlo en una máquina de destino ARM. Lo más probable es que no esté haciendo uso de semihosting, quiere reorientar.

La cadena de herramientas del compilador ARM® versión 4.1 indica:

Semihosting es un mecanismo que permite que el código que se ejecuta en un objetivo ARM se comunique y use las instalaciones de Entrada / Salida en una computadora host que ejecuta un depurador.

Del archivo readme.txt de toolchain (en la carpeta .../gcc-arm-none-eabi-VERSION/share/doc/gcc-arm-none-eabi ):

** non-semihosting / regener

Si está utilizando un re-diseño, vincule como: $ arm-none-eabi-gcc --specs = nosys.specs $ (OTHER_LINK_OPTIONS)

Para mí --specs=nosys.specs fue suficiente;)



Yo tuve el mismo problema. La solución fue la siguiente:

  • Agregue opciones -ffreestanding -flto en la línea de llamada del compilador.
  • Y agregue opciones -flto -ffreestanding -nostdlib en la línea de llamada del enlazador.