--------------------------------------------------------------------------------
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 编译/连接器) 把一个程 序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使 用到的部分。但它每次只能从程序包中把一个完整的目标文件排除在 外。因此如果你参考一个程序包中某一个目标档中任何一个符号的话, 那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分 的分解了的话,那么经连接后,得到的可执行文件会比从一个大目标 文件组成的程序包连接得到的文件小得多。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 指南 文件 一个 如果 可以 这个 编译 规则 makefile 需要 |
注册
个人空间
