Какова причина удаления crt0.o из gcc4.7.x?

Я пытаюсь перейти на yagarto4.7.2 (еще один инструментальный пакет GNU ARM, для тех, кто интересуется), который представляет собой gcc и binutils, портированные для Windows. Тем не менее, попытка скомпилировать простой Hello World дает:

c:/yagarto-20121222/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi
/bin/ld.exe: cannot find crt0.o: No such file or directory
collect2.exe: error: ld returned 1 exit status

Теперь на этом форуме ясно, что это библиотека инициализации запуска, которая была удалена после gcc4.6.x. Предлагаются два решения:

  • компилировать с -nostartfiles
  • скопируйте crt0.o из 4.6.x в папку 4.7.x

Оба выглядят довольно грязно и неприемлемо для производственного кода. Так кто-нибудь знает, почему была удалена эта библиотека и каков теперь ее эквивалент?

1 ответ

Решение

crt0.o является производным от crt0.s, который предоставляется ОС. В случае установки с нуля, этот файл должен быть предоставлен реализацией. Он содержит код запуска и выхода, например, для обнуления.bss.

Другие вопросы по тегам