c - Ubuntu 上 makefile 编译 C 源文件

标签 c makefile

我正在尝试在 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/

相关文章:

c - 如何通过 MPI 将结构作为数组发送?

makefile - 为什么Make中的 `shell`命令删除换行符?

c - gcc 的示例 makefile

c++ - “Make”因Clang错误而失败-如何从Clang中获取错误?

makefile - 如何通过测试文件是否存在来有条件地设置 Makefile 变量

c - Matlab 脚本已移至 C,但 ode45 的输出不同

c# - 使用嵌入式 Mono (libmono-2.0) 时 C# 对象何时被垃圾回收

c - 修改C中的全局结构变量

c - 从不兼容的指针类型传递 'y' 的参数 x

c++ - makefile 依赖于特定目录中的所有文件