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