使用make编译多个C文件

Moh*_*nde 28 c makefile compilation modular

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

adu*_*ric 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
Run Code Online (Sandbox Code Playgroud)

这里的关键是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的文件.

  • 那么你当然是对的.但是对于Makefiles而言,OP是相对较新的,我只想在没有任何间接的情况下展示底层流程. (6认同)
  • 可能是原始的和硬编码但它帮助我很多看到我必须做的事情.跑步之前走路! (4认同)
  • ...除了你不应该对编译器进行硬编码,你应该利用预定义的构建规则...参见我的教程. (3认同)
  • "但是对于Makefiles来说OP是相对较新的" - 你应该让他沿着正确的道路前进,而不是在他的第一个例子中放置常见的错误. (3认同)

shi*_*kou 0

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