我正在尝试在 Ubuntu 12.04 上使用一个 makefile 编译各种 c 文件。
这是代码:
myprog: main.o assembler.o print.o secondPass.o
gcc -g -ansi -Wall main.o assembler.o print.o secondPass.o -o myprog
main.o: main.c
gcc -c -ansi -Wall main.c -o main.o
assembler.o: assembler.c
gcc -c -ansi -Wall assembler.c -o assembler.o
print.o: print.c
gcc -c -ansi -Wall print.c -o print.o
secondPass.o: secondPass.c
gcc -c -ansi -Wall secondPass.c -o secondPass.o
我在这里没有看到任何不属于的空格,我收到的错误如下:
make: *** [main.o] Error 1
最佳答案
附录:阅读了本线程中的其他讨论后,我相信下面的解释很可能不是原始问题的原因。
<小时/>您已将命令缩进了四个空格。但你需要用一个制表符来缩进它们;空格将不起作用。 Make 因这种敏感而臭名昭著,它让每个人都发疯。
我尝试了你的 makefile,但用制表符缩进替换了四空格缩进,并且它与 Gnu Make 3.81 一起工作。
如果您无法使用编辑器修复 makefile,您可以尝试通过运行以下命令来修复 makefile:
perl -i -lpe 's/^ /\t/' Makefile
它告诉 Perl 将四个空格的每个实例替换为制表符 (\t
)。
关于c - Ubuntu 上 makefile 编译 C 源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22579915/