Этот список C файлов:
C_FILES = assembler.c utils.c symbol_table.c file_scan.c utils.h data_block.c commands.c
содержит заголовок, файл utils.h
.
Когда этот оператор:
O_FILES = $(C_FILES:.c=.o)
создает В списке объектных файлов подстановка .c=.o
не изменяет utils.h
, в результате чего O_FILES
содержит файл заголовка. Затем эта команда сборки:
gcc -Wall -ansi -pedantic $(O_FILES) -o $(EXEC_FILE)
просит G CC выполнить свои действия по умолчанию с файлами, то есть связать объектные файлы и записать исполняемый файл и «прекомпилировать» (проанализировать) заголовок файл и запишите файл данных «предварительно скомпилированный заголовок». Таким образом, у вас есть два выходных файла.
Чтобы исправить это, удалите utils.h
из C_FILES
и поместите его в H_FILES
.