gnu make 指南
译者按: 本文是一篇介绍 gnu make 的文章,读完后读者应该基本掌握了 make 的用法.而 make 是所有想在 unix (当然也包括 linux )系统上编程的用户必须掌握的工具.如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值.也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的.希望本文可以为中国的 unix 编程初学者提供一点儿有用的资料.中国的 linux 用户除了学会安装红帽子以外, 实在应该尝试写一些有用的程序.个人想法,大家参考.
c-scene 题目 #2 【程序编程相关:网络系统实现技术--AppleTalk】
翻译: 哈少 【推荐阅读:Gmail的一个GUI小工具--Gmai】
作者: 乔治富特 (goerge foot) 【扩展信息:ASP.NET 2.0 Beta2 中特】多文件项目与 gnu make 工具电子邮件: george.foot@merton.ox.ac.ukoccupation: 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 编译/连接器) 把一个程序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使用到的部分.但它每次只能从程序包中把一个完整的目标文件排除在外.因此如果你参考一个程序包中某一个目标档中任何一个符号的话,那么这个目标文件整个都会被连接进来.要是一个程序包被非常充分的分解了的话,那么经连接后,得到的可执行文件会比从一个大目标文件组成的程序包连接得到的文件小得多.又因为你的程序是很模块化的,文件之间的共享部分被减到最少,那就有很多好处——可以很容易的追踪到臭虫,这些模块经常是可以用在其它的项目里的,同时别人也可以更容易的理解你的一段代码是干 什么的.当然此外还有许多别的好处……1.2 何时分解你的项目很明显,把任何东西都分解是不合理的.... 下一页