荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: zzt (我命由我不由天), 信区: Linux
标 题: GNU make指南[转](一)
发信站: BBS 荔园晨风站 (Wed Jun 7 08:23:19 2000), 转信
【 以下文字转载自 zzt 的信箱 】
【 原文由 zzt.bbs@flanker.uestc.edu.cn 所发表 】
发信人: bclz (依然是不见不散), 信区: Linux
标 题: GNU make指南[转](一)
发信站: 一网深情 (Wed May 26 10:03:53 1999), 转信
GNU make 指南
芬耄? 哈少
译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make
的用法。而 make 是所有想在 Unix (当然也包括 Linux
)系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make
,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说
有点 儿偏激,但 make
实在是应该用在任何稍具规模的程序中的。希望本文可以为中国的 Unix
编程初学者提供一点儿有用的资料。中国的 Linux
用户除了学会安装红帽子以外,
实在应该尝试写一些有用的程序。个人想法,大家参考。
_________________________________________________________________
C-Scene 题目 #2
多文件项目和 GNU Make 工具
作者: 乔治富特 (Goerge Foot)
电子邮件: george.foot@merton.ox.ac.uk
Occupation: Student at Merton College, Oxford University, England
职业:学生,默尔顿学院,牛津城大学,英格兰
IRC匿名: gfoot
_________________________________________________________________
拒绝承诺:作者对于任何因此而对任何事物造成的所有损害(你所拥有或不
拥有的实际的,抽象的,或者虚拟的)。所有的损坏都是你自己的责任,而
与我无关。
所有权: “多文件项目”部分属于作者的财产,版权归乔治富特1997年
五月至七月。其它部分属 CScene 财产,版权 CScene 1997年,保留所有
版权。本 CScene 文章的分发,部分或全部,应依照所有其它 CScene 的文章
的条件来处理。
0) 介绍
~~~~~~~~~~~~~~~
本文将首先介绍为什么要将你的C源代码分离成几个合理的独立档案,什么时
候需要分,怎么才能分的好。然后将会告诉你 GNU Make 怎样使你的编译和连
接步骤自动化。对于其它 Make 工具的用户来说,虽然在用其它类似工具时要
做适当的调整,本文的内容仍然是非常有用的。如果对你自己的编程工具有怀
疑,可以实际的试一试,但请先阅读用户手册。
1) 多文件项目
~~~~~~~~~~~~~~~~~~~~~~
1.1为什么使用它们?
首先,多文件项目的好处在那里呢?
它们看起来把事情弄的复杂无比。又要 header 文件,又要 extern
声明,而且如果需要查找一个文件,你要在更多的文件里搜索。
但其实我们有很有力的理由支持我们把一个项目分解成小块。当你改
动一行代码,编译器需要全部重新编译来生成一个新的可执行文件。
但如果你的项目是分开在几个小文件里,当你改动其中一个文件的时
候,别的源文件的目标文件(object files)已敬嬖冢悦挥惺裁? ?-
因去重新编译它们。你所需要做的只是重现编译被改动过的那个文
件,然后重新连接所有的目标文件罢了。在大型的项目中,这意味着
从很长的(几分钟到几小时)重新编译缩短为十几,二十几秒的简单
调整。
只要通过基本的规划,将一个项目分解成多个小文件可使你更加容易
的找到一段代码。很简单,你根据代码的作用把你的代码分解到不同
的文件里。当你要看一段代码时,你可以准确的知道在那个文件中去
寻找它。
从很多目标文件生成一个程序包 (Library)比从一个单一的大目标文件
生成要好的多。当然实际上这是否真是一个优势则是由你所用的系统
来决定的。但是当使用 gcc/ld (一个 GNU C 编译/连接器) 把一个程
序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使
用到的部分。但它每次只能从程序包中把一个完整的目标文件排除在
外。因此如果你参考一个程序包中某一个目标档中任何一个符号的话,
那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分
的分解了的话,那么玖雍螅玫降目芍葱形募岜却右桓龃竽勘?
文件组成的程序包连接得到的文件小得多。
又因为你的程序是很模块化的,文件之间的共享部分被减到最少,那
就有很多好处——可以很容易的追踪到臭虫,这些模块境J强梢杂?
在其它的项目里的,同时别人也可以更容易的理解你的一段代码是干
什么的。当然此外还有许多别的好处
1.2 何时分解你的项目
很明显,把任何东西都分解是不合理的。象“世界,你们好”这样的
简单程序根本就不能分,因为实在也没什么可分的。把用于测试用的
小程序分解也是没什么意思的。但一般来说,当分解项目有助于布局、
发展和易读性的时候,我都会采取它。在大多数的情况下,这都是适
用的。(所谓“世界,你们好”,既 'hello world' ,只是一个介
绍一种编程语言时惯用的范例程序,它会在屏幕上显示一行 'hello world'
。是最简单的程序。)
如果你需要开发一个相当大的项目,在开始前,应该考虑一下你将
如何实现它,并且生成几个文件(用适当的名字)来放你的代码。
当然,在你的项目开发的过程中,你可以建立新的文件,但如果你
这么做的话,说明你可能改变了当初的想法,你应该想想是否需要
对整体结构也进行相应的调整。
对于中型的项目,你当然也可以采用上述技巧,但你也可以就那么开
始输入你的代码,当你的码多到难以管理的时候再把它们分解成不同
的档案。但以我的狙槔此担际痹谀宰永镄纬梢桓龃蟾诺姆桨福?
并且尽量遵从它,或在开发过程中,随着程序的需要而修改,会使开
发变得更加容易。
--
执子之手,与子谐老。
※ 来源:.一网深情 bbs.uestc.edu.cn.[FROM: 202.115.16.197]
--
※ 转寄:.一网深情 bbs.uestc.edu.cn.[FROM: 210.39.3.50]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店