【问题标题】:Compile multiple C files with make使用 make 编译多个 C 文件
【发布时间】:2011-02-05 23:00:38
【问题描述】:

(我运行的是 Linux Ubuntu 9.10,因此可执行文件的扩展名是 executablefile.out)我刚刚开始使用 C 进行模块化编程(使用多个文件进行编程),我想知道如何在一个文件中编译多个文件生成文件。例如,编译这些文件的 makefile 是什么:main.c、dbAdapter.c、dbAdapter.h? (顺便说一句,如果你还没有弄清楚,主要功能在 main.c 中)还有人可以发布一个指向 makefile 文档的链接吗?

【问题讨论】:

    标签: c makefile compilation modular


    【解决方案1】:

    GNU make 应该是您要查找的内容。

    【讨论】:

      【解决方案2】:

      发布的链接都很好。对于你的特殊情况,你可以试试这个。基本上所有 Makefile 都遵循这种模式。其他一切都是快捷方式和宏。

      program: main.o dbAdapter.o
         gcc -o program main.o dbAdapter.o
      
      main.o: main.c dbAdapter.h
         gcc -c main.c
      
      dbAdapter.o dbAdapter.c dbAdapter.h
         gcc -c dbAdapter.c
      

      这里的关键是 Makefile 按顺序查看规则并根据需要构建某些项目。

      它会首先查看程序并看到要构建程序,它需要名为 main.o 和 dbAdapter.o 的东西。

      然后它将找到 main.o。但是,要构建 main.o,它需要 main.c 和 dbAdapter.h(我假设 dbAdapter.h 包含在 main.c 中)。

      它将使用这些源代码通过 gcc 编译来构建 main.o。 -c 表示我们只想编译。

      它对 dbAdapter.o 做同样的事情。当它拥有这两个目标文件时,就可以链接它们了。它也为这一步使用 gcc 编译器。 -o 表示我们正在创建一个名为 program 的文件。

      【讨论】:

      • ...除了您不应该对编译器进行硬编码,并且应该利用预定义的构建规则...请参阅我的教程。
      • 当然你是对的。但是 OP 对 Makefiles 来说相对较新,我只想展示底层过程而没有任何间接性。
      • “但是 OP 对 Makefiles 来说相对较新”——你应该让他走上正确的道路,而不是在他的第一个示例中添加常见错误。
      • 可能是粗略且硬编码的,但它对我了解我必须做什么很有帮助。先走后跑!
      • 我完全同意 Mike John Michael Aaron Safyan 的观点。把模式记下来,然后学会做对!
      猜你喜欢
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多