我正在尝试学习make
命令,但我对使用标题的方式有点麻烦
我得到了prg1.c
#include <stdio.h>
main()
{
printf("Hello World\n");
print();
}
和prg2.c
#include <stdio.h>
print()
{
printf("Hello World from prg2\n");
}
这是make文件
objects = prg1.o prg2.o
exe : $(objects)
cc -o exe $(objects)
prg1.o : prg1.c
cc -c prg1.c
prg2.o : prg2.c
cc -c prg2.c
这完美无缺。但是如果我在两个文件中都没有包含stdio.h
然后我必须使用make
编译它,我该如何编写makefile?
答案 0 :(得分:3)
如果您不包含<stdio.h>
,那么您可以执行以下两项操作之一:
为printf
自己提供正确的声明:
int printf(const char *fmt, ...);
几乎没有任何理由做这样的事情。
如果您的编译器是GCC,请使用-include
编译器选项强制包含"stdio.h"
:
prg1.o: prg1.c
gcc -c -include stdio.h prg1.c
这完全是好事;不要这样做。
请注意,make
实用程序与确保C转换单元中包含正确的标题材料无关。 make
是一个实用程序,它运行shell命令以响应某些不存在的文件或具有比其他文件旧的修改标记。