Linux的make工具

368 阅读3分钟

什么是GNU?

GNU是一款自由操作系统,实现了UNIX系统的接口标准。

什么是GNU Make?

GNU Make 是 GNU 操作系统下的一个软件,这个软件可用来控制一些可执行文件和其他从源文件来的非源代码文件的版本

什么是make?

而 make 是一条命令,是GNU Make 软件识别的一条可执行指令。它读入一个名为Makefile的文件,并按Makefile文件的指示执行文件中书写的命令。

make用来干什么?

make一般用来编译和管理大型程序项目。你可以在你的项目的根目录下创建一个Makefile文件,在里面书写一些项目构建的规则,然后用make命令去执行makefile,进而得到构建结果。

什么是Makefile?

Makefile文件(Makefile不是文件格式,但却是一种有语法的文件,默认名称是Makefile,名称也可以为其他,只要内容是符合Makefile语法的)描述了整个工程的编译、连接等规则。其中包括:工程中哪些源文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件、最后如何生产可执行文件。Makefile 有自己的书写格式、关键字、函数,而且在Makefile中可以使用系统shell所提供的任何命令来完成想要的工作,就行一个shell脚本一样。尽管编写Makefile看起来是很复杂的事,但带来的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个过程来说是多个)正确的Makefile,编译整个工程就只需要在shell提示符下输入make命令,极大提高了效率。

make最终的功能表现

  1. Make使最终用户可以在不知道构建细节的情况下通过简单的命令来构建和安装你的软件,因为这些细节都记录在了你提供的Makefile中。
  2. 由于Linu文件在更新时都会被记录下最后修改时间,Makefile可以自动知道哪些文件需要更新,它会按照文件的依赖关系递归更新文件。因为,在重新编译时,我们可以只重新编译那些修改过的文件。
  3. Make不限于任何一种特定的语言。对于程序中任何一种非源文件,makefile文件中可以指定shell命令去生成它。shell指令可以执行编辑器生成目标文件,执行链接器生成可执行文件,执行ar更新库文件等。
  4. Make不限于用来生成软件包。你可以用make来控制安装和卸载软件包,或者用来生成标签表,以及其他任何你想要的文件,当然前提是你能用makefile描述这个过程。

makefile语法

Makefile的核心是通过规则(Rule)描述了工作目标与依赖项之间的关系,基础语法如下:

target:dependencies ...
       commands

一个规则包括target,及其构建的依赖项(dependencies)commands前面必须是‘\t’(Tab键),给出由依赖项构建target需要调用的shell脚本命令。

更多

makefile中.PHONY的作用:www.cnblogs.com/amanlikethi…

make命令的简单使用示例:www.cnblogs.com/hazir/p/lin…

makefile基础语法:blog.csdn.net/fengbingchu…