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

最佳答案

张贴的链接都很好。对于您的特殊情况,您可以尝试一下。基本上所有的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的文件。

08-17 05:35