66 $(NAME):
67 gcc -c $(FLAGS) -o ft_ls $(MAIN) $(OBJ)
68 ar rc $(NAME) $(OB)
В приведенном выше фрагменте у вас есть цель $ (NAME) [= ft_ls] без каких-либо зависимостей и две команды, которые пытаются создать исполняемый файл и библиотеку. Кроме того, вы определяете переменную с именем OB, но ссылаетесь на переменную с именем OBJ. Я подозреваю, что вы должны только создавать исполняемый файл, как это
$(NAME): $(MAIN) $(OB)
gcc $(FLAGS) -o ft_ls $(MAIN) $(OB)
Если вы используете GNU make, вы можете использовать $ @ для цели и $ ^ для зависимостей (это упрощает поддержку вашего Makefile), например:
$(NAME): $(MAIN) $(OB)
gcc $(FLAGS) -o $@ $^
Непонятно, как ваши объектные файлы компилируются. Если у вас просто куча файлов .c и вам нужны некоторые файлы .o, то, вероятно, используется suffix rule
(см. здесь ), поэтому вам нужно что-то вроде
.c.o:
$(CC) -c $(FLAGS) -o $@ $<