在运行我的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值,无论哪个需要。这有什么不对吗?
答案 0 :(得分:2)
对于第一个错误,请确保在尝试在其中创建库之前存在../lib
目录。如果路径不存在,ar
将返回该错误。
对于第二个make
语法是strict:目标之后的命令必须使用制表符缩进,而不是空格。
target: deps
command
# ^ this here needs to be a tab character, not spaces