创建Make文件时出现编译错误

时间:2011-12-03 10:33:29

标签: gcc makefile

在运行我的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 个答案:

答案 0 :(得分:2)

对于第一个错误,请确保在尝试在其中创建库之前存在../lib目录。如果路径不存在,ar将返回该错误。

对于第二个make语法是strict:目标之后的命令必须使用制表符缩进,而不是空格。

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