Я думаю, что ваш make-файл имеет неправильные зависимости:
Последняя часть должна выглядеть примерно так:
func_asm1.o: func_asm1.S
$(AS) -o $@ $<
func_asm2.o: func_asm2.S
$(AS) -o $@ $<
app: app.c app.h func_asm1.h func_asm2.h func_asm1.o func_asm2.o
$(CC) $(SFLAGS) app.c -o app.o func_asm1.o func_asm2.o
Почему?Поскольку func_asm1.o и func2.o зависят от их исходного кода (я предполагаю, что вы не используете func_asm.h в исходном коде ассемблера). С другой стороны, app.o зависит от его исходного кода (app.c),его заголовочные файлы (app.h, func_asm1.h и func_asm2.h) и объектный код для файлов сборки.Обратите внимание, что вы компилируете И , связывая эту часть make-файла, поэтому, если объектный код для файлов сборки изменяется, вам необходимо заново связать приложение и, следовательно, выполнить эти строки.
Как яКак уже отмечалось в комментариях, вы должны проверить параметры, переданные в gcc (флаг -S передан в SFLAGS)