Unix爱好者家园最引人注目的广告位!
  欢迎 xxtcfpl 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心

加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 网站留言 论坛 站内搜索 卓越资源 源代码

今天是:2010年03月13日 星期六  您现在位于: 首页 → 技术文章 → GNU make中文手...
   GNU make中文手册-(13)和其它版本的兼容
作者:  出处:Unix爱好者家园unix-cd.com  更新时间: 2006年03月17日 
--------------------------------------------------------------------------------

GNU make存在一些和其它版本make不兼容的功能,对于其它版本make的部分功能,GNU make也没有实现。POSIX.2 标准 (IEEE Standard 1003.2-1992)没有规定以下的这些特点需要在make中实现。

Ø        形如“FILE((ENTRY))”的目标代表静态库文件“FILE”的一个成员。它的成员不是用文件名,而是一个定义了连接符号“ENTRY”的.o文件。GNU make没有支持它的原因是。这样的规则需要对静态库内部符号索引表需要熟悉。GNU make对静态库成员的更新可参考第十一章

Ø        以字符“~” 结尾的后缀在System V make的后缀规则中有特别的含义;它指的是对应目标文件的依赖文件是没有“~”的SCCS 文件。例如,System V的后缀规则“.c~.o”含义是:“N.o”是从SCCS文件“s.N.c”中提取的。为了完全覆盖,可能需要一系列的这样的规则。GNU make对它的处理是:使用两个模式规则从SCCS文件抽取一个文件,这两个模式规则形成一个隐含规则链。可参考 10.4 隐含规则链 一节

Ø        在System V 和 4.3 BSD make中,通过“VPATH”指定的目录搜寻(参考 4.5 目录搜索 一节)的文件,对应的文件名需要经过make改变后才加入对应规则到命令行中。GNU make使用自动环变量来实现这一功能。

Ø        在一些Unix的make中,自动化变量“$*”(参考 10.5.3 自动化变量 一节)作为规则的依赖时,具有奇怪的特征:它会被扩展为该规则的目标全名。它和GNU make中“$*”的含义完全不同。 

Ø        在一些Unix的make中。会为所有目标搜索隐含规则(参考第十章),不仅仅是指对那些没有命令的目标。就是说如果我们的规则时这样的话: 

foo.o:

       cc -c foo.c

这种版本的make就会认为目标“foo.o”的依赖文件是“foo.c”。我们认为make的这种处理方法容易导致混乱。因为Makefile已经对目标有明确的定义,而在为目标搜索隐含规则是不合逻辑的。因此GNU make没有支持这种方式的规则处理。

Ø        GNU make不包含任何编译以及预处理EFL程序的内嵌隐含规则。如果其它那种版本的make已经实现了这个特性,我们会很乐意地把它加入到GNU make支持的特性中。

Ø        在 SVR4版本的make中,一个没有命令的后缀规则被作为一个空命令规则来处理(参考 5.8 空命令 一节)。例如:

.c.a:

这个规则将覆盖内嵌的目标为“.c.a”的规则。

GNU make对这个规则的行为是为目标.a添加一个依赖类型.c。上述的行为在GNU make中的实现是:

.c.a: 

Ø        一些版本的make 在调用shell时使用“-e”参数告诉shell,在除执行“make -k”(参考 9.6 使用make进行编译测试 一节)时,一旦命令行执行失败(返回状态非0)就立即退出。我们认为对于不同的命令的执行结果要视情况来处理。因此GNU make的没有支持这种方式。

 (本文已被浏览 3517 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:GNU make中文手册-(12)GNU make...
下篇文章:GNU make中文手册-(14)Makefile...
 相关文章:
Linux系统下软件包管理(7) Linux系统下软件包管理(6)
Linux系统下软件包管理(5) Linux系统下软件包管理(4)
Linux系统下软件包管理(3) 让Linux象Windows一样安装卸载
GNU make中文手册 将Unix应用程序移植到Linux系统详解
GDB调试精粹及使用实例 GNU线性编程中的中间问题
Linux下用Gnuplot科学绘图入门 shell编程例子 -- 一个makefile例子
Linux操作系统中GCC的应用介绍(上) Linux基础认识 理解GNU/Linux
常用命令之 make常见规则解析 Linux/Unix环境下的make和makefile详解
FreeBSD中的GNU C编译器--编译器GCC Debian 3.1 桌面安装方法
GNU make中文手册-(附录)关键字索引 GNU make中文手册-(15)make的常见错误信息

相关搜索
查看百度中关于GNU make中文手册-(13)和其它版本的兼容的更多内容
查看google中关于GNU make中文手册-(13)和其它版本的兼容的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备09036304号
    Copyright (c) 2001-2010 Unix-cd.com. All Rights Reserved.