《Beginning Linux programming 4th Edition》中文翻译(一)


1.  译序 

《beginning linux programming 》是一本讲述Linux应用开发的一本挺不错的参考书,目前已经是第四版(2008),由于工作需用到Linux开发,所以在网上找到该书。但目前并没有发现第四版有中文的翻译。所以本人试着翻译了几章内容,现在贡献出来供大家share。

相关下载:

《Beginning Linux Programming 4th Edition》下载在

《Linux程序设计》下载在
                        

相关阅读:

《Linux程序设计》——文件操作之底层函数调用 

Beginning Linux Programming 笔记

2. 第九章 开发工具(Development Tools)

    本章介绍在Linux环境中开发程序所用到的工具,其中有一些在UNIX系统中也可使用。除了明显必须的编译调试器以外,Linux提供一个工具集,工具集中的每个工具都完成一项工作,这使得开发者能够创新性的将这些工具组合起来完成工作。这也是Linux继承Unix的思想的表现之一。本章将会学习这些工具和使用工具的具体实例,包括以下几方面:

(1)make命令及makefile文件

(2)源代码控制软件RCS和CVS

(3)写Manual说明页

(4)使用patch和tar分发软件

(5)开发环境

--------华丽的分隔符-----------

多个源文件的问题

当我们写小型程序时,许多开发者可以在修改代码后简单的重新编译他们的程序。但是,当开发大型项目时,这种方法就显现出来问题了。项目的修改-编译-测试周期变长了。即使是最耐心的开发者也难以忍受修改一个文件就要编译整个工程。

一个更加潜在的困难问题是建立了多个头文件,这些头文件包含在不同的源文件中。假设有a.h, b.h以及c.h三个头文件,有main.c 2.c和3.c三个C的源文件(实际项目中请不要使用这样的命名)。你可能会遇到以下的情景:

  1. /*main.c*/  
  2. #include "a.h"   
  3. ...   
  4. /*2.c*/  
  5. #include "a.h"   
  6. #include "b.h"   
  7. ...   
  8. /*3.c*/  
  9. #include "b.h"   
  10. #include "c.h"   
  11. ...  

如果开发者改变了c.h文件,那么main.c以及2.c无需重新编译,这是因为它们都不依赖于c.h。但是3.c因为依靠于c.h所以就需要重新编译。另外,若b.h更改后忘记重新编译2.c文件,那么结果是程序的功能运行不正常。

make工具通过确定文件的更改从而确定有无需要重新编译,所以能解决上述问题。

注:make命令不止用来编译程序,还可以通过输入文件构造输出文件,其他应用包括文档处理(e.g. troff or TeX)。

----------------------华丽的分割线--------------------------------

make命令以及Makefiles

  虽然make命令有内嵌的智能,但是仍然不能完全编译您的程序。你必须提供一个文件告诉make命令如何构造您的程序。这个文件就成为makefile.

  makefile很多时候都和源代码文件在同一目录里,在任何时候你的电脑上都可以存在多个makefile。实际上,当项目很大时,你可以在项目的不同部分使用不同的makefile。

  make命令与makefile的结合为操作项目提供了强大的工具,不仅能够控制源代码的编译,也能用来写manual说明页以及安装程序到某个目录。

Makefile的语法

  makefile包含依赖关系以及规则关系。依赖关系根据源代码生成目标文件;规则关系描述了如何从依赖的文件建立目标文件。准确的说,target就是一个可执行文件。

  make命令读取makefile,决定如何输出目标文件,然后根据源文件的修改日期决定如何构建目标。通常,先建立中间文件,然后才建立目标文件。make命令使用Makefile决定输出目标文件的次序。

make命令的选项参数

make程序本身有些选项,最常用三种是:

1)-k,使make工具发现错误后不是立即停止,而是对错误之后的源代码文件继续编译。可以使用本选项一次性发现错误。  

2)-n,使make工具打印出它要如何编译,但不是真正的编译。

3)-f <filename>,用于指定make工具使用哪个makefile文件。如果不指定此选项,make标准版工具将会首先在当前目录下寻找叫做makefile的文件,若找不到就寻找Makefile文件。但是在大多数Linux系统中使用GNU版的Make工具,make会首先寻找GNUnakefile,然后是makefile,最后是Makefile。习惯上大多数程序员使用Makefile,这使makefile文件在以小写的文件名称按字典排序的目录里排在首位。建议不使用GNUmakefile,因为它只针对GNU版本实现。

通过设置参数告知make工具建立一个目标文件,通常是可执行文件。如果不这样做的话,make会建立在makefile文件里的第一个目标。许多程序员指定all为他们makefile的第一个目标,并且将其他的目标文件作为all的依赖文件。这种习惯使得在没指定目标的情况下makefile文件默认构造目标正确。建议采用这种技巧。

  • 1
  • 2
  • 下一页

相关内容