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
в линию вызова компоновщика.