Linux系统充斥着各种c代码,多的让人害怕,它们是怎么样编译成可执行文件的?难道写这些代码的coder都是变态?和这些源代码一起的肯定会有一个叫makefile的文件,里面包含了这些代码之间的依赖关系吗,描述了整个工程的编译,连接等规则。

 

执行makefile文件的命令是:make

 

makefile的格式/规则是:

目标:依赖

        命令

例子:

hello:main.o func1.o func2.o

       gcc main.o func1.o func2.o -o hello

如何现在要添加一个依赖到上面的例子中

第一种方法:

hello:main.o func1.o func2.o func3.o

       gcc main.o func1.o func2.o func3 -o hello

第二种方法:

obj=main.o func1.o func2.o func3.o

hello:$(obj)

      gcc $(obj) -o hello

这里用变量 obj 减少了更改次数。

还有一些事系统的自动化变量:

比如:

$^ :所有的依赖文件

$@:代表目标

#c:第一个依赖文件