Я работал над использованием системы сборки Meson для встроенного проекта. Поскольку я работаю на встроенной платформе, я написал собственный скрипт компоновщика, а также вызов для компоновщика. У меня не было проблем, пока я не попытался связать в newlib
свой проект, когда у меня начались проблемы со связью. Непосредственно перед тем, как я заработал, последней ошибкой было undefined reference to main
, которое, как я знал, было явно в проекте.
В связи с этим я попытался добавить -mcpu=cortex-m4
к своему вызову компоновщика (я использую gcc
чтобы связать, мне говорят, что это довольно типично, вместо прямого вызова ld
). Это сработало! Теперь мой единственный вопрос - «почему»?
Возможно, я что-то упускаю из-за того, как на самом деле работает процесс компоновки, но, учитывая, что я просто создаю файл ELF, я не думал, что было бы важно указатьархитектура процессора для компоновщика. Это вещь newlib
, или gcc
просто делал за кадром магию для меня, чего я раньше не видел?
Для справки вот мой проект (этоне завершено)