跟跟
跟跟
跟跟
我一我一
我一我一
我一我一
起起
起起
起起
写写
写写
写写
跟跟
跟跟
跟跟
我一我一
我一我一
我一我一
起起
起起
起起
写写
写写
写写
MaMa
MaMa
MaMa
kk
kk
kk
ee
ee
ee
ff
ff
ff
ileile
ileile
ileile
MaMa
MaMa
MaMa
kk
kk
kk
ee
ee
ee
ff
ff
ff
ileile
ileile
ileile
陈皓
(CSDN)
概
述
什么是
makefile
?或许很多
Winodws
的程序员都不知道这个东西,因为那些
Windows
的
IDE
都 为 你 做了这 个工作,但我觉得要作一个好的和
professional
的 程 序 员,
makefile
还是要懂。这就好像现在有这么多的
HTML
的编辑器,但如果你想成为一个专
业人士,你还是要了解
HTML
的标识的含义。特别在
Unix
下的软件编译,你就不能不
自己写
makefile
了,会不会写
makefile
,从一个侧面说明了一个人是否具备完成大型工
程的能力。
因为,
makefile
关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、
功能、模块分别放在若干个目录中,
makefile
定义了一系列的规则来指定,哪些文件需
要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能
操作,因为
makefile
就像一个
Shell
脚本一样,其中也可以执行操作系统的命令。
makefile
带来的好处就是——“自动化编译”,一旦写好,只需要一个
make
命令,整
个工程完全自动编译,极大的提高了软件开发的效率。
make
是一个命令工具,是一个
解释
makefile
中指令的命令工具,一般来说,大多数的
IDE
都有这个命令,比如:
Delphi
的
make
,
Visual C++
的
nmake
,
Linux
下
GNU
的
make
。可见,
makefile
都成为了
一种在工程方面的编译方法。
现在讲述如何写
makefile
的文章比较少,这是我想写这篇文章的原因。当然,不同产商
的
make
各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章,这里,
我仅对
GNU
的
make
进行讲述,我的环境是
RedHat Linux 8.0
,
make
的版本是
3.80
。必
竟,这个
make
是应用最为广泛的,也是用得最多的。而且其还是最遵循于
IEEE
1003.2-1992
标准的(
POSIX.2
)。
在这篇文档中,将以
C/C++
的源码作为我们基础,所以必然涉及一些关于
C/C++
的编
译的知识,相关于这方面的内容,还请各位查看相关的编译器的文档。这里所默认的编
译器是
UNIX
下的
GCC
和
CC
。
关于程序的编译和链接
在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是
C
、
C++
、还是
pas
,首先要把源文件编译成中间代码文件,在
Windows
下也就是
.obj
文件,
UNIX
下
是
.o
文件,即
Object File
,这个动作叫做编译(
compile
)。然后再把大量的
Object File
合成执行文件,这个动作叫作链接(
link
)。