我已经知道头文件和库的区别了。然而,当我编写我的 makefile 时,我在决定是否应该将某些内容作为文件的依赖项或仅放在链接规则中时遇到一些困难。
例如:我有 2 个简单的文件: 主程序:
#include <stdio.h>
main(){
printf("this is the sine or 90");
sinus(90);
}
和 func.c:
#include <math.h>
sinus(int num){
return sin(num);
}
我的 makefile 是:
main: main.o func.o
gcc main.o func.o -lm -o main
func.o: func.c
main.o: main.c
好吧,我的问题是为什么这个 makefile 有效而这个无效:
main: main.o func.o
gcc main.o func.o -lm -o main
func.o: func.c math.h
main.o: main.c
最佳答案
您不需要使 func.o 依赖于 math.h,因为该文件不太可能更改。
关于如果你这样做会得到的错误是因为你没有明确指定 make 应该如何编译文件所以它试图推断如何编译它并且它只适用于简单的情况。我不确定 make 究竟是如何做到的,但我认为它确实做到了 gcc -o target.o -c <your deps>
.
关于c - 它是头文件还是库?在生成文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957398/