Как сказал Джозеф, компилятор говорит вам, что вы определили идентификатор 'debugMode' несколько раз. Вы можете сказать, потому что он ссылается на раздел .bss, который имеет отношение к двоичному файлу, а не к make. Кроме того, компоновщик ld
явно является причиной сбоя на этом этапе, что имеет смысл, поскольку является ошибкой компоновщика.
При этом я бы сделал следующие рекомендации для вашего make-файла. Внутренне, Make уже знает, как скомпилировать c-файлы, и выглядит это так:
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $^
Этот рецепт создаст все необходимые объектные файлы из файлов c, но, опять же, Make уже знает это. Если вы собираетесь написать рецепт полностью, это должно быть потому, что вы добавляете дополнительные вещи, необходимые для проекта. Вы хотите указать компилятор как $ (CC), чтобы когда ваши пользователи компилировали проект, они могли указать свой компилятор по своему выбору, например: make CC=icc
или любой другой.
Чтобы подчеркнуть главное, проблема в вашем коде, а не в make-файле.