Ошибки компиляции при создании файла Make - PullRequest
0 голосов
/ 03 декабря 2011

Во время работы моего файла make, который выглядит следующим образом,

../bin/output : ../lib/libfun.a ../obj/main.o
                gcc ../main.o -L ../lib/ -lfun -o $@
../lib/libfun.a : ../obj/file_write.o ../obj/error.o
                ar -rc $@ $^
../obj/main.o   : ../src/main.c
                gcc -c $^ -o $@ -I ../include
../obj/file_write.o     : ../src/file_write.c
                gcc -c $^ -o $@ -I ../include
../obj/error.o  : ../src/error.c
                gcc -c $^ -o $@ -I ../include

Я получаю сообщение об ошибке типа

make: Warning: File `makefile' has modification time 2.2e+03 s in the future
ar -rc ../lib/libfun.a ../obj/file_write.o ../obj/error.o
ar: ../lib/libfun.a: No such file or directory
make: *** [../lib/libfun.a] Error 1

а иногда

"* отсутствует разделитель (вы имели в виду TAB вместо 8 пробелов?). Стоп"

Почему это происходит? Я дал правильные значения Target, Pre-Requests и Command в зависимости от того, что нужно. Что в этом плохого?

1 Ответ

2 голосов
/ 03 декабря 2011

При первой ошибке убедитесь, что каталог ../lib существует, прежде чем пытаться создать в нем библиотеку. ar вернет эту ошибку, если путь не существует.

Для второго make синтаксис строг: команды после цели должны иметь отступ с табуляцией, а не пробелами.

target: deps
        command
#  ^ this here needs to be a tab character, not spaces
...