makefile的格式:

标(target): 目标文件1 目标文件2

<tab> gcc -o 欲建立的执行文件  目标文件1 目标文件2

centos makefile写法 linux makefile文件编写_环境变量

(target) 就是我们想要建立的信息,而目标文件就是具有相关性的 object files ,那建立执行文件的诧法就是以 <tab> 按键开头的那一行!特别给他留意喔,『 命令行必须要以 tab 按键作为开头』才行!他的觃则基本上是这样的:
 在 makefile 当中的 # 代表批注;
 <tab> 需要在命令行 (例如 gcc 这个编译程序指令) 的第一个字符;
 标的 (target) 不相依档案(就是目标文件)之间需以『 :』隔开。


简化版的makefile:

centos makefile写法 linux makefile文件编写_鸟哥私房菜_02


我们的 makefile 里面就具有至少两个标的,分别是 main 不 clean ,如果我们想要建立main 的话,输入『 make main』,如果想要清除有的没的,输入『 make clean』卲可啊!而如果想要先清除目标文件再编译 main 这个程序的话,就可以这样输入:『 make clean main』,如下所示

centos makefile写法 linux makefile文件编写_目标文件_03



由于 gcc 在进行编译的行为时,会主动的去读取 CFLAGS 这个环境变量,所以,你可以直接在 shell 定义出这个环境变量,也可以在 makefile 档案里面去定义,更可以在指令列当中给予

centos makefile写法 linux makefile文件编写_鸟哥私房菜_04

也可以写成这样

centos makefile写法 linux makefile文件编写_目标文件_05


环境变量取用的规则是这样的:

1. make 指令列后面加上的环境变量为优先;

2. makefile 里面指定的环境变量第二;

3. shell 原本具有的环境变量第三。

此外,还有一些特殊的变量需要了解的喔:
 $@:代表目前的标的(target)

所以也可以将 makefile 改成(参考鸟哥私房菜基础第三版):

centos makefile写法 linux makefile文件编写_鸟哥私房菜_06