您的浏览历史

Linux高级程序设计

促销活动
  • [本书]参加人民邮电出版社满80元赠书活动

基本信息

编辑推荐

畅销书《Linux 程序设计(第3 版)》后使你更上一层楼的经典著作.
著名开源技术社区LUPA 强烈推荐..
全面阐述现代Linux 程序设计的技术和方法...

内容简介回到顶部↑

本书是Linux 程序设计领域的一部力作,讲解了大量程序员需要掌握的关键知识点,包括Linux 开发中的基本工具、Linux 系统编程、Linux 桌面开发以及Linux 与Web 开发。书中包括大量有益的经验之谈和富于启发的示例。
  本书主要针对已有一定Linux 开发经验或者从其他平台转到Linux 平台的专业程序员,同样也适合想更多了解系统以解决实际问题的Linux 使用者。

作译者回到顶部↑

本书提供作译者介绍

Jon Masters著名Linux内核工程师。目前效力于Red Hat公司。13岁取得计算机科学学士学位,创造了英国记录。他精通Linux内核引擎、Unix系统管理、基于Linux的嵌入式系统开发,而且在网络、安全等领域也颇有造诣。目前正在负责维护Module—init—tools—Linux官方的一个工具包,包含所有与Linux内核交互的工具。他还是Linux User&Developer、Linux Magazine等著名杂志的专栏作家。

  Richard Blum毕业于美国普度大学电气工程专业,资深程序员。精通多种编程语言。除本书外,他还著有Profession.. << 查看详细

陈健
陈健,1973年10月出生,1996年毕业于南京大学电子科学与工程系,获学士学位。2002年获南京大学计算机软件专业硕士学位。现工作于南京大学网络信息中心。长期从事网络管理、软件研发和教学工作。研究方向为网络管理。.. << 查看详细

[同作者作品]
Linux程序设计(第3版) (07年度畅销榜NO.5) (08年度畅销榜TOP50)
Linux高级程序设计

作者: Jon Masters
Jon Masters 著名Linux 内核工程师。目前效力于Red Hat 公司。13 岁取得计算机科学学士学位,创造了英国记录。他精通Linux 内核引擎、Unix 系统管理、基于Linux 的嵌入式系统开发,而且在网络、安全等领域也颇有造诣。目前正在负责维护Module-init-tools——Linux 官方的一个工具包,包含所有与Linux 内核交互的工具。他还是Linux User &Developer、Linux Magazine 等著名杂志的专栏作家。... << 查看详细

[同作者作品]
Linux高级程序设计

作者: Richard Blum
Richard Blum 毕业于美国普度大学电气工程专业,资深程序员,精通多种编程语言。.. 除本书外,他还著有Professional Assembly Language 等经典著作,深受读者好评。..... << 查看详细

[同作者作品]
汇编语言程序设计[按需印刷]
Linux高级程序设计
Professional Linux Programming

目录回到顶部↑

第1章 Linux简介 
 1.1 Linux发展简史 
  1.1.1 GNU项目 
  1.1.2 Linux内核 
  1.1.3 Linux发行版 
  1.1.4 自由软件与开放源码 
 1.2 开发起步 
  1.2.1 选择一个Linux发行版 
  1.2.2 安装Linux发行版 
  1.2.3 沙盒和虚拟化技术 
 1.3 Linux社区 
  1.3.1 Linux用户组 
  1.3.2 邮件列表 
  1.3.3 IRC 
  1.3.4 私有社区 
 1.4 关键差别 
  1.4.1 Linux是模块化的 
  1.4.2 Linux是可移植的 
  1.4.3 Linux是通用的 
 1.5 本章总结 

前言回到顶部↑

Linux近几年来有了很大的发展,已从一个不起眼的小玩意发展到在越来越多的《财富》500强公司中发挥巨大作用。从人们使用的手机到最大型的超级计算机集群,几乎都在使用Linux内核和为Linux编译的软件。但究竟什么是Linux?是什么使得它和目前市场上其他的类UNIX操作系统区别开来的呢?最重要的是,如何才能在我们的软件项目中充分利用Linux的强大功能和广泛使用的自由/开放源码软件(Free,Libre,and Open Source Software,简称FLOSS①)带来的变革呢?.
本书的目的就是为了讨论这些问题以及其他问题。写作本书的目的源自于读者的这样一种需求,即究竟是什么使得Linux如此独一无二,但本书并不是一本适合Linux初学者的指南,因为这样的书早已在市场上存在了。这些年来,作为一位专业的Linux程序员,我们发现一起工作的很多技术精湛的软件工程师都缺乏或没有Linux编程方面的经验。其中一些工程师一直在寻找与本书类似的图书,但最后总是失望而归。为了让读者不再遭受这样的挫折,本书将帮助读者理解Linux社区的强大意义、已确立的软件开发模型和Linux世界中处理事务的方式。
有许多图书声称是专为Linux编程而写的,其中有许多书确实非常出色,但它们往往过于集中地介绍Linux简单继承自其前辈的内容。在本书中你不会发现这些内容,本书不是一本只介绍Linux和其他老版本UNIX系统共有内容的图书,而是一本介绍现代Linux操作系统的图书。本书不仅仅是另外一本UNIX编程类图书,它试图解释为什么Linux这么成功,并向读者展示在这个主题上被其他图书一笔带过或完全忽略的系统中的某些部分。
在本书中,你将学习到是什么推动了Linux的开发过程。你将了解各种各样常被Linux开发人员使用的工具——编译器、调试器和软件配置管理工具,以及这些工具是如何用来构建应用软件、工具甚至Linux内核自身的。你将学习到Linux系统中使其与其他类UNIX系统真正区分开来的特有组件,你还将深入研究Linux系统的内部工作机理,以便更好地理解作为新一代Linux开发人员你所需要扮演的角色。
你将学习一些新颖的开发方法,包括虚拟化技术的使用和交叉编译的使用(一种为不同的兼容平台编译软件的手段)。你还将学习对于一个没有国界的社区来说软件国际化的重要性——Linux是真正国际性的,它的用户也是如此。最后,你将通过为热门的LAMP(Linux、Apache、MySQL、Perl/Python)组合编写软件来学习Linux在现代因特网上的广泛用途。Linux所包含的内容远不只是Linux内核,作为一位Linux开发人员,意识到这一点是非常重要的。
最重要的是,本书将为未来进一步学习打下基础。通过对推动Linux开发的关键主题的深刻讨论,我们将为你打开通向自由/开放源码软件项目世界的大门。在阅读本书之后,你将能更好地明白你究竟① 2000年,Rishab Ghosh在荷兰创造了FLOSS这个词,libre是法语中的“自由”一词。——译者注
需要了解什么,你并不会在本书中找到所有的答案,但你将具备自己发现这些答案的能力。不论你是使用Linux编写自由软件还是参与一个大型商业软件项目,你都将在阅读本书中有所收获。
读者对象
本书为两类不同的读者服务。首先,本书面向的是准备转向Linux开发平台的程序员,这类读者已经熟悉C编程语言,并理解了编译器、链接器和调试器等基本概念。他们有可能已看过这方面的介绍性图书,例如,Wrox的Beginning Linux Programming(Wiley 2004)①,但却缺乏实践经验。
对于那些从事专业Linux软件开发的新手而言,本书的内容安排非常有利于学习。你可以按顺序逐章阅读全书,也可以有选择地跨过与内核相关的章节(第7~9章),而把学习重点放在在每天的项目中都会用到的与更高层次应用程序和工具相关的章节。你还将在本书中找到工具链(Toolchain)、可移植性和有特定用途的SCM(Software Configuration Management,软件配置管理)的背景知识。
对于那些已在他们的日常生活中使用Linux并且想要深入了解一个典型的Linux系统的内部工作原理,而又不需要开发软件的Linux爱好者、管理人员和其他有关人员来说,本书也包含他们感兴趣的内容。现代Linux系统是如何进行硬件检测的?为什么Linux内核不提供设备驱动程序模块?Linux是如何支持国际化的?许多类似的问题都可以在本书中找到答案。
对于那些已经有Linux使用经验的读者来说,并不需要阅读本书的全部内容,但可能也会在每一章中发现一些新鲜和有趣的内容。我们通常会在脚注和注释中包括一些你可能在以前没有遇到过的示例和建议,其中包括从其他人的经验中获取的轶事和教训。你可能会选择投入更多的精力在本书后面讨论Linux内核、桌面和LAMP的章节中。
最后,不管你是一位对Linux或UNIX有基本了解同时又希望开扩视野的微软的Windows开发人员,还是一位从过去的岁月走过来的执着的UNIX程序员,希望了解是什么使得Linux如此成功,本书都会对你有所帮助。
主要内容..
本书涵盖了各种各样用于Linux软件开发和软件本身的技术,包括现代UNIX、类UNIX和Linux系统的背景知识,从一个平台到另一个平台的软件可移植性以及有助于在现代的Linux软件发行中实现这一目标的工具。你将学习到如何通过网络接口、图形化用户环境、复杂的基于Web的现代LAMP组合来与Linux系统进行交互,甚至将学习到如何扩展Linux内核本身。在本书中你将学习到的是现代Linux的开发技术。
本书的内容反映了写作时技术的最新发展水平,但软件的版本却在不断变化。因此,本书讨论的大多数主题并不要求使用某个特定版本的工具、源代码或发行包。如果需要,我们会在书中指出,否则,你可以假设书中的示例可以运行在任一个你所使用的最新的Linux发行版本上。
① 中文版《Linux程序设计》(第3版)已由人民邮电出版社出版。——编者注
组织结构
本书大致分为4个部分。在第一部分中,你将了解一些基本的工具和技术,目的是让你(作为一位专业的Linux程序员)的生活更加轻松。你将了解GNU工具链、软件可移植的重要性和软件国际化的需求,以及许多其他的主题,这些内容能帮你提高软件项目开发的效率。你可能想先阅读这些内容,并会经常查阅它。
本书的第二部分介绍了一个典型的Linux系统的底层部分,即传统的系统编程的主题,包括网络、数据库概念和Linux内核。可以通过阅读这些内容来更好地理解你所感兴趣的主题,但你并不需要学习这些章节中的所有内容,特别是本书中关于Linux内核部分的内容,因为本书并不是一本Linux内核编程类的图书,但通过对这些内容的学习确实会让你更想继续深入学习。

媒体评论回到顶部↑

本书不是一本适合Linux 初学者的指南,但是有经验的Linux 程序员都能从中受益。它深入地阐述了Linux 程序设计过程中所涉及的重要知识、技巧和常用工具,让你能更透彻地理解:‘作为一位现代Linux 程序员,你究竟需要什么。’.
“——著名开源技术社区LUPA(http://www.lupaworld.com/)强烈推荐..
“本书出色地为其他平台的程序员揭示了Linux 程序设计的复杂本质,而且特别强调了内核开发。为作者喝彩!”
——Linux Magazine 杂志...

书摘回到顶部↑

第1章 Linux简介
为Linux编写软件的一个最大障碍是弄明I刍Linux是什么和它不是什么。不同的人对Linux有着不同的理解。虽然如今大多数用户都随意地将整个基于Linux的系统称为Linux,但从技术角度来说,Linux本身是由芬兰人Linus Torvalds编写的一个操作系统内核。在短短几年时间里,Linux迅速发展并被全球一些最大的企业和最强大的计算机用户所广泛接受。
 Linux现在已成为一个提供高收益和企业质量的操作系统。它既用于一些最大型的超级计算机,也用在许多你根本不会想到的底层由Linux支持的最小型装置中。然而,这样一个在现代计算机领域中流行的大品牌却并不属于任何一家公司。Linux之所以会这么成功,是因为有数以千计来自世界各地的开发者在坚持不懈地努力来完善它。这些开发者和你一样,对编写高质量的软件有浓厚的兴趣,并从Linux社区中获取他人的经验。
 不管Linux对你意味着什么,你选择本书是因为你想了解更多的有关如何成为一位专业Linux程序员的知识。当你准备开始这次学习之旅时,你将发现如果你对不同版本的Linux系统有所了解,知道如何开始对它们进行开发,并且清楚Linux开发和目前市场上其他流行平台的开发有何不同,将会对你的学习有很大的帮助。如果你已是一位Linux专家,那么只需略读本章即可。如果你想成为一位Linux专家,本章将会为你提供一些有用的指导。
在本章中,你将站在专业程序员的角度来学习什么是Linux以及Linux发行版的各个组件是如何组合在一起的。你将学习Linux系统上所用的大多数自由/开放源码软件(FLoSS)的开发过程,并找到大量提供开放源码革命动力的在线社区。最后,你还将了解至JJLinux与你之前遇到的其他操作系统的一些不同之处——我们将在本书的其余部分介绍更多这方面的内容。
  1.1  Linux发展简史
  Linux有一个非常多样而有趣的历史,它的历史可能比你最初想象的要早得多。事实上,Linux的继承历史跨越了30年,可以从20世纪70年代最早的UNIX系统算起。这一事实不只是与执着的Linux狂热者有关,对读者来说也很重要,因为它至少让你对目前接触到的现代Linux系统的独特历史有一个大致的了解。通过介绍这些历史能让你更好地理解将Linux和目前市场上的其他操作系统区分开来的细节特征,并有助于使Linux的开发更加有趣。
  Linux本身的工作最早始于1991年夏天,但早在Linux存在之前,就有了GNU项目。这个项目已花费了lof年的时问来创建很多必要的自由软件组件,其目的就是为了能创建一个完全自由的操作系统,如Linux。如果没有GNU项目,就不会诞生Linux;同样,如果没有Linux,你可能也不会立刻去阅读GNU项目。这两个项目彼此之间互相受益,正如你将要在本书所要讨论的主题中发现的那样。
  1.1.1 GNU项目
1983年,那时的Richard Stallman(也称为RMS)还在麻省理工学院的人工智能实验室工作。直到那时为止,许多软件应用程序还是以源代码的形式提供,或有源代码可用,以便用户在必要的时候针对自己的系统进行修改。但从那时开始,已存在一种日益增长的趋势,即软件厂商只发行二进制版本的软件应用程序。软件的源代码很快变成了公司的“商业机密”,并受到高度保护——开放源码的开发者通常将这些源代码称为“秘笈”。
GNU项目最初的目标是通过使用必要的工具从源代码开始创建一个自由的类UNIX操作系统。该项目花了10多年的时间创建了所需的大多数工具,包括GCC编译器、GNU emacs文本编辑器和数十个其他的工具和文档。其中许多工具都以它们的高品质和丰富的功能而闻名,例P口Gcc和GNU调试器。
GNU享有许多早期的成就,但它在20世纪80年代缺少了一个最关键的组件。它没有自己的内核,即操作系统的核心,而是需要用户在已有的商业操作系统,如专有的UNIX上安装GNU2L具。虽然这并不会对许多在他们自己的专用系统上使用GNUl具的用户造成什么影响,但如果GNU项目没有自己的内核,它就不是一个完整的项目。在Linux出现之前,针对是否开发这样一个内核(如发展中的GNUHURD)的激烈争论长期以来一直存在着。
Linux从来没有真正成为Richard Stallman所设想的GNU操作系统的一部分。事实上,尽管Linux已成为新一代用户和开发者的宠儿,并且是迄今为止更受欢迎的内核,GNU项目还是一直主张在其概念性的GNU系统中使用GNU HURD微内核。尽管如此,仍然会偶尔看到在提及一个完整的Linux系统时使用术语“GNU/Linux”,这是对在构建和运行任何一个现代Linux系统中扮演重要角色的众多GNUI具的认可。
  1.1.2 Linux,内核
Linux内核的诞生远晚于GNU项目本身,在Richard Stallman发表他的最初宣言之后的10多年后它才出现。在此之前,已有一些可供选择的操作系统被开发出来,包括HURD微内核(在狂热的内核开发者社区之外只赢得了有限的大众关注)和FhAndrewTanenbaum编写的用于教学目的的Minix微内核。但由于种种原因,在Linux初次登台之前没有一个系统在这一段最好的时机中获得一般计算机用户的广泛认可。
就在那时,一位在赫尔辛基大学读书的年轻的芬兰学生正受制于Minix操作系统中很多他认为不合理的地方。于是,他开始专门为他的(当时很高级的)AT 386微机设计自己的操作系统。此人就是Linus Torvalds,他将继续领导这个已创造了整个Linux产业的项目并激励着新一代。
Linus在1991年夏天开发出Linux的最初版本后,就在Usenet新闻组comp.OS.minix中发表了如下的公告:
日期:25Au9 91 20:57:08 GMT
组织:赫尔辛基大学
所有使用minix的人们——我正在为386(486)AT微机开发一个(免费的)操作系统(只是个人爱好,它不会像9nu那样庞大和专业)。我从4月份开始酝酿该系统,现在已进入准备阶段。我需要任何喜欢或不喜欢minix的朋友的反馈意见,因为我的操作系统与它有些类似(同样的文件系统物理布局(由于某些实际原因)以及其他方面)。
评论交流

共有22人开贴评论  25人参与评论  17人参与打分 查看

5人
 29%
用户平均打分
我要写评论 help如何参与评论和打分
8人
 47%
4人
 23%
0人
 0%
0人
 0%

fatmouse

专家级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-1-27 1:51:00
所谓高级,可能是指书中介绍的是比较复杂的应用吧,相对介绍系统调用的书来说。
书中所涉及的内容,基本上都是简单介绍介绍,本书没打算替代任何书中所涉及工具本身所带的手册。整体来讲侧重于在linux环境下搭建复杂应用的开发环境。非常好读的一本入门书。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

xypmdxx
五级评论员
  
发表于:2009-12-24 12:46:00
本书没有介绍的那么详细,但是也很方便像我这样的菜鸟入门,不介绍过多的知识,只是负责把几本的道理讲明白,而且例子代码将知识表述的更加清楚,是本入门级的好书。 入门学习的时候会有很多不懂得地方,这是需要我们验证或者看一下讲的东西怎么去使用,二本书通过详细的代码做到了这一点,所以很不错,值得基础的学习,手把手教你开发linux软件,驱动,偏重于操作,在此基础上再学习原理,阅读源代码就不会很难了。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

bill_stone

三级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-12-23 9:48:00
内容很泛泛,当不起“高级”二字
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

fredwhite

四级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-12-17 17:03:00
没有感觉高级的地方,叫做下册可能更好些。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

gbs111998877
一级评论员
  
发表于:2009-9-15 12:15:00
垃圾得不想说!还是linux程序设计第三版好!
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共22条)