荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店