会员控制台 会员登陆 会员注册 最后更新 高级搜索 会员投稿 退出登陆
2007年12月28日 星期五 丁亥年十一月十九
设为首页
收藏本站
留言给我
首页 | 操作系统类 | 程序设计类 | 数据库类 | 应用服务类 | 网络及硬件类 | 其他技术 | GBunix论坛
操作系统类
Linux
BSD
Solaris
AIX
SCO UNIX
程序设计类
SHELL
Java/j2ee
C/C++
ASP/ASP.Net
其他程序
数据库类
Oracle
Mysql
Postgresql
Informix
Sybase
DB2
应用服务类
WebServer
NameServer
MailServer
FTP服务器
其他应用
网络及硬件类
售前配置/技术方案
网络与通信技术
其他技术
电脑横机技术
Unix中文 / 操作系统类 / Linux / Linux/Unix环境下的Make和Makefile详解
Linux/Unix环境下的Make和Makefile详解
2005-01-21 Pathetique 博客园 点击: 25472
Linux/Unix环境下的Make和Makefile详解
无论是在Linux还是在Unix环境中,make都是一个非常重要
的编译命令。不管是自己进行项目开发还是安装应用软件,我们
都经常要用到make或make install。利用make工具,我们可以将
大型的开发项目分解成为多个更易于管理的模块,对于一个包括
几百个源文件的应用程序,使用make和makefile工具就可以简洁
明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的
源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来
说简直就是一场灾难。而make工具则可自动完成编译工作,并且
可以只对程序员在上次编译后修改过的部分进行编译。因此,有
效的利用make和makefile工具可以大大提高项目开发的效率。同
时掌握make和makefile之后,您也不会再面对着Linux下的应用软
件手足无措了。
但令人遗憾的是,在许多讲述Linux应用的书籍上都没有详细
介绍这个功能强大但又非常复杂的编译工具。在这里我就向大家
详细介绍一下make及其描述文件makefile。
Makefile文件
Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工
作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,
并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息
的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。
在 UNIX 系统中,习惯使用 Makefile 作为 makfile 文件。如果要使用其他文件作为 makefile,则可利用类
似下面的 make 命令选项指定 makefile 文件:
$ make -f Makefile.debug
例如,一个名为prog的程序由三个C源文件
filea.c、fileb.c和filec.c以及库文件LS编译生成,这三个文件还分别
包含自己的头文件a.h 、b.h和c.h。通常情况下,C编译器将会输出三个目标文件filea.o、fileb.o和filec.o。假设
filea.c和fileb.c都要声明用到一个名为defs的文件,但filec.c不用。即在filea.c和fileb.c里都有这样的声明:
#include "defs"
那么下面的文档就描述了这些文件之间的相互联系:
---------------------------------------------------------
#It is a example for describing makefile
prog : filea.o fileb.o filec.o
cc filea.o fileb.o filec.o -LS -o prog
filea.o : filea.c a.h defs
cc -c filea.c
fileb.o : fileb.c b.h defs
cc -c fileb.c
filec.o : filec.c c.h
cc -c filec.c
----------------------------------------------------------
这个描述文档就是一个简单的makefile文件。
从上面的例子注意到,第一个字符为 # 的行为注释行。第一个非注释行指定prog由三个目标文件filea.o、
fileb.o和filec.o链接生成。第三行描述了如何从prog所依赖的文件建立可执行文件。接下来的4、6、8行分别指定
三个目标文件,以及它们所依赖的.c和.h文件以及defs文件。而5、7、9行则指定了如何从目标所依赖的文件建立
目标。
百度主题推广
新款
紧身短裤超低价
低价新款女士服装、童装、内衣就上易趣网上
商城
search.eachnet.com
Page 1 of 5Unix中文 - Linux/Unix环境下的Make和Makefile详解
2007-12-28http://www.
bunix.com/htmldata/2005
01/1/3/article
1145
1.html
评论0