使用make编译多个C文件

时间:2010-04-09 00:39:21

标签: c makefile compilation modular

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

3 个答案:

答案 0 :(得分:39)

发布的链接都很好。对于您的特殊情况,您可以试试这个。基本上所有的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中)。

它将使用这些源来构建main.o,方法是使用gcc编译它。 -c表示我们只想编译。

dbAdapter.o也是如此。当它有这两个目标文件时,它就可以链接它们了。它也使用gcc编译器进行此步骤。 -o表示我们正在创建一个名为program的文件。

答案 1 :(得分:24)

查看我的Makefile Tutorial: How To Write A Makefile。它提供了一个精心设计的Makefile,它将构建这样一个项目(包含多个C和C ++源文件),解释它是如何工作的,并警告常见的陷阱以及糟糕的makefile实践,这些实践在野外遇到很常见

答案 2 :(得分:0)

GNU make应该是您正在寻找的。