c - 它是头文件还是库?在生成文件中

标签 c makefile header

我已经知道头文件和库的区别了。然而,当我编写我的 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/

相关文章:

html - 如何将带有两个标题的图片放在网页的同一区域?

c - 当你只有一台电脑时,如何模拟两台电脑连接局域网?

bash - 在Circleci中使用golang-ci-lint

ruby-on-rails - 在 Rails 应用程序上使用 Prawn gem 重复页脚与当前页面和每页的总页数,但重叠当前页码

创建一个通用的 makefile

c++ - 为 Windows x64 构建 log4cplus

c - 第一次在 c 中使用 headers 并且真的不太了解它

使用 valgrind 修复 Cairo 和内存泄漏

c - 如何通过流程粘合系统?

c - C 如何保证等于数组值的内存地址可用?