20.1.3
什么是
make
与
configure
事实上,使用类似
gcc
的编译程序来½行编译的过程并不简单,因为一套软件并不会½有一支程序,
而是有一堆程序代码文件。所以除了每个主程序与子程序均需要写上一笔编译过程的指令外,还需要
写上最终的链½程序。
程序代码小的时候还好,如果是类似
WWW
服务器软件
(
例如
Apache
)
,
或者是类似核心的原始码,动则数百
MBytes
的数据量,编译指令会写到疯掉~这个时候,我们就
可以使用
make
这个指令的相关功能来½行编译过程的指令简化了!
当执行
make
时,
make
会在当时的目录下搜寻
Makefile (or makefile)
这个文本文件,而
Makefile
里
面则记录了原始码如何编译的详细信息!
make
会自动的判别原始码是否经过变动了,而自动更新
执行档,是软件工程师相当好用的一个辅助工具呢!
咦!
make
是一支程序,会去找
Makefile
,那
Makefile
怎么写?
通常软件开发商都会写一支侦测
程序来侦测用户的作业环境,
以及该作业环境是否有软件开发商所需要的其他功能,该侦测程序侦
测完毕后,就会主动的½立这个
Makefile
的规则文件啦!通常这支侦测程序的文件名为
configure
或
者是
config
。
咦!那为什么要侦测作业环境呢?在
第一章
当中,
不是曾经提过其实每个
Linux distribution
都使用
同样的核心吗?但妳得要注意,
不同版本的核心所使用的系统呼½可能不相同,而且每个软件所需
要的相依的函式库也不相同,
同时,软件开发商不会½针对
Linux
开发,而是会针对整个
Unix-Like
做开发啊!
所以他也必须要侦测该操作系统平台有没有提供合适的编译程序才行!所以当然要侦测
环境啊!
一般来说,侦测程序会侦测的数据大约有底下这些:
.
是否有适合的编译程序可以编译本软件的程序代码;
.
是否已经存在本软件所需要的函式库,或其他需要的相依软件;
.
操作系统平台是否适合本软件,包括
Linux
的核心版本;
.
核心的表头定义档
(header include)
是否存在
(
驱动程序必须要的侦测
)
。
至于
make
与
configure
运作流程的相关性,我们可以使用底下的图示来示意一下啊!
下图中,妳
要½行的任务其实只有两个,一个是执行
configure
来½立
Makefile
,
这个步骤一定要成功!成功
之后再以
make
来呼½所需要的数据来编译即可!非常简单!