Совместимость между версиями GNU Make - PullRequest
0 голосов
/ 28 ноября 2018

Я много лет использую GCC для компиляции проектов ARM, разработанных с использованием Eclipse.Я решил, что пришло время обновить инструменты, которые я использую.

Я использую версию GCC 'cribbed' от CodeSourcery, но я обновил до последней версии с http://gnutoolchains.com/arm-eabi/.Все работает хорошо, за исключением Make:

Папка CodeSourcery содержит версию cs-make.exe от 30.04.2013.Я загрузил более новую версию GCC / GDB из http://gnutoolchains.com/arm-eabi/ в папку, которую я назвал SysGCC.Он содержит приложение make.exe от 27.05.2015.

Я изменил свой make-файл для использования SysGCC, и он правильно компилируется.Однако, если я затем изменю свой проект для запуска make.exe вместо cs-make.exe, консоль выдаст следующие ошибки:

make -j -k all 
make: *** No rule to make target `IO.o', needed by `Display.elf'.
make: *** No rule to make target `XTPcommon.o', needed by `Display.elf'.
make: *** No rule to make target `DisplayCommon.o', needed by `Display.elf'.
.
.

Содержимое моего make-файла довольно сложноеи включите следующее:

%.o : %.c makefile
    $(COMPILE) -c $(CFLAGS) $< -o $(OUTPUT_FOLDER)/$@
    $(COMPILE) -MM $(CFLAGS) $< > $(OUTPUT_FOLDER)/$(addsuffix .d, $(notdir $(basename $@)))

Поскольку они строятся правильно с cs-make.exe, я не вижу причин, почему они не должны строить с make.exe.Так что же не так?

1 Ответ

0 голосов
/ 29 ноября 2018

Спасибо вам обоим за ответы.

Я провел много разочаровывающих часов, пробуя различные комбинации GCC, OpenOCD, драйверов JTag и плагинов Eclipse.У меня есть множество версий сборки проекта, которые все работают с моим предыдущим набором инструментов, и я попытался скопировать различные из них в проект, который я использую для тестирования нового набора инструментов.

Я в конце концов нашел решение.Мне каким-то образом удалось испортить мой проект, чтобы использовать исходные файлы из одной версии сборки и make-файл из другой версии, и между ними возникли проблемы несовместимости.

Симптомы были очень обманчивы и привели меня к различным тупикам.Я до сих пор не могу понять, почему он работал с одной версией make, а не с другой.

Когда я исправил проект, все работало правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...