exit.c:(.text+0x18): неопределенная ссылка на `_exit'при использовании arm-none-eabi-gcc

Я новичок в области микроконтроллеров. Мне нужно портировать IDE, которая компилирует программы для микроконтроллеров AVR, чтобы компилировать программы для микроконтроллеров ARM. Я только что заменил компилятор с AVR на ARM и добавил некоторые опции, как кто-то сказал. Ниже приведена команда:

\ARM-GCC\bin\arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft 
-Wa,-adhlns="$@.lst" -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 

Когда я выполняю его, я получаю следующую ошибку:

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

Могу ли я получить некоторую помощь о том, что это за ошибка и как я могу ее исправить. А также я не знаю, что указывают эти параметры в командной строке.

3 ответа

Это происходит при компиляции файла с arm-none-eabi-gcc в одной машине / архитектуре, чтобы загрузить его в целевой машине ARM. Скорее всего, вы не используете полухостинг, вы хотите перенастроить.

ARM® Compiler toolchain версии 4.1 показывает:

Semihosting - это механизм, который позволяет коду, выполняемому на цели ARM, взаимодействовать и использовать средства ввода / вывода на главном компьютере, на котором выполняется отладчик.

Из readme.txt цепочки инструментов (в папке .../gcc-arm-none-eabi-VERSION/share/doc/gcc-arm-none-eabi):

** не полухостинг / ретаргетинг

Если вы используете ретаргетинг, используйте следующие ссылки: $ arm-none-eabi-gcc --specs=nosys.specs $(OTHER_LINK_OPTIONS)

Для меня --specs=nosys.specs было достаточно;)

Использование --specs=nosys.specs:

arm-none-eabi-gcc --specs=nosys.specs $(OTHER_LINK_OPTIONS)

Ссылка:

У меня такая же проблема. Решение было следующим:

  • Добавить параметры -ffreestanding -flto в строку вызова компилятора.
  • И добавить варианты -flto -ffreestanding -nostdlib в линию вызова компоновщика.
Другие вопросы по тегам