基本信息
- 原书名:Unix to Linux porting: a comprehensive reference
- 原出版社: Prentice Hall PTR
- 作者: (美)Alfredo Mendoza Chakarat Skawratananond Artis Walker
- 译者: 张昕
- 出版社:机械工业出版社
- ISBN:9787111209119
- 上架时间:2007-5-18
- 出版日期:2007 年4月
- 开本:16开
- 页码:408
- 版次:1-1
- 所属分类:计算机 > 操作系统 > Linux
计算机 > 操作系统 > UNIX

编辑推荐
本书是第1本专门讲应用程序从 UNIX到 Linux 平台移植的图书,内容很贴近实际需要,可操作性强。
内容简介
计算机书籍
本书讲述怎样把应用程序移植到Linux环境上运行,是一本综合的开发和解决问题的参考手册。内容包括:理解Linux环境,GNU二进制工具,Java环境、shell、打包工具等,揭示并确定项目的未知因素、可变因素及其他风险,处理具体平台的区别,标准、编译器、链接器、版本化、系统/库调用、线程等,使用GNU调试器及Linux内存泄露和性能跟踪工具测试和调试移植后的应用程序:UNIX和Linux上API、编译器和链接器选项的快速索引,以及IBM POWER结构特有的移植问题。.
本书适合软件开发人员、应用程序架构师,以及项目经理等参考使用。
越来越多的开发人员、架构师和项目经理面临着把UNIX上的C、C++和Java应用程序移植到Linux上的挑战。本书是一本权威的移植指南,指导你从当今最常用的UNIX平台(Solaris、HP-UX和AIX)上把程序移植到Linux上。..
本书的三位作者是IBM最有经验的Linux移植专家,他们将带领你走完整个项目移植过程:调查、分析、移植和测试。他们给出了一种完整的移植方法,对关键任务进行了切实的讨论,并给出了评估新项目时可能用到的调查问卷。按照本书的方法,你会发现Linux在API、库函数、版本化、系统特性和工具等方面所提供的功能以及它们对你的项目的影响。另外,作者还详细讲述了每个独立的UNIX平台上特有的问题和最实用的解决方法。
本书主要内容
· 理解Linux环境:GNU二进制工具、Java环境、shell、打包工具等。
· 揭示并确定项目的未知因素、可变因素及其他风险。
· 处理具体平台的区别:标准、编译器、链接器、版本化、系统/库调用、线程等。
· 使用GNU调试器、Linux内存泄漏及性能跟踪工具测试和调试移植后的应用程序。
· 包含了UNIX和Linux上API、编译器和链接器选项的快速索引,以及IBM POWER结构特有的移植问题。...
作译者
Chakarat Skawratananond博士,IBM公司Business Strategy and Enablement组的技术顾问,在一些软件厂商将他们的应用程序移植到基于IBM POWER处理器的AIX和Linux上时,他提供这方面的技术支持。他发表过一些关于Linux软件移植和性能调优等方面的文章。..
Artis Walker IBM公司Business Strategy and Enablement组的技术顾问。他在AIX和DB2的移植和性能调优方面发表了许多文章,而且是IBMPOWER AIX和Linux开源解决方案系列文章的主要作者。...
目录
序言.
致谢
关于作者
第1章 项目移植思考 1
1.1 软件程序商业过程 1
1.2 移植过程 2
1.2.1 调查 2
1.2.2 分析 3
1.2.3 移植 3
1.2.4 测试 4
1.2.5 支持 4
1.3 定义项目范围和目标 4
1.4 估计 5
1.4.1 技能水平和移植经验 6
1.4.2 编译器 6
1.4.3 第三方软件和中间件的可用性 6
1.4.4 编译环境和工具 7
1.4.5 平台依赖的结构 7
1.4.6 平台/硬件依赖的代码 7
译者序
正如本书作者所述,Linux已经逐渐发展成为了一个企业级的操作系统,越来越多的企业已开始在Linux上部署一些关键应用。由于Linux是在UNIX的基础上发展起来的,因此,在Linux上开发新应用程序的同时,许多成熟的UNIX应用程序也需要移植到Linux上。Linux和UNIX在很多方面是兼容的,因此有些应用程序可能不需要多大改动(例如,使用的都是通用标准的API),即可以在Linux上很好地运行;但是,也有一部分应用程序(例如,调用了操作系统相关的API,或者使用了内核支持等),可能需要较多修改才能在Linux上编译运行。本书的作者就是总结了自己多年的移植经验,写出了《UNIX到Linux的移植》这本书。
要做好一个移植项目,首先要做好计划。但是,在刚接到一个移植项目时,项目组成员多数情况下并不了解该项目。因此,如何做出一个可行的、合理的项目计划,就成了项目经理和技术领导首先要解决的问题。本书的开始部分从项目管理的角度对移植项目进行了剖析,并在第1章的结尾部分,给出了一个关于移植项目的调查问卷。在回答了问卷中的问题以及引申出来的问题后,接下来的“调查”和“分析”两章针对前面的问题,以循序渐进、逐步求精的方式详细剖析了Linux操作系统。在此基础上,移植人员可以清楚地知道Linux提供了哪些功能,以及待移植应用程序的关键技术在Linux上能否实现且如何实现。本书分三章详细讲述了从Solaris、AIX和HP-UX三种UNIX操作系统移植到Linux的细节,并在最后讲述了Linux上的调试、跟踪工具和调试方法。可以说,本书是一本比较系统、完整地讲述移植项目的参考资料。
在翻译本书的过程中,译者正好也在移植一个GSM通信平台项目,可以说本书的内容给译者的移植工作带来了很多启发。..
首先是编译环境移植。译者的项目是从一个老的vxWorks 5.3系统移植到vxWorks 5.5系统,并支持新的单板。由于新操作系统换了编译器版本、系统库和C++库等,因此在切换编译环境后,需要查找对应的编译器选项,新老系统库的区别,以及C++库的不兼容性等。尤其是C++库,GNU 3.3携带的C++库与GNU 2.96及以前版本的C++库相比,有较大变化(例如C++库里的符号命名和异常处理方式),译者在用新的编译器生成与老的C++库兼容的代码时,费了很大功夫。仅反复编译的次数,最多时一天就达30多次。
译者移植过程中另一个比较费时间的地方是启用虚拟内存支持。由于vxWorks 5.5及以前版本不支持虚拟内存,而在译者的项目中各objects编译时指定了起始虚拟地址,运行时需要装载到某一物理地址,并建立虚拟地址到物理地址的映射。由于新单板所用的处理器PPC85XX与老单板的处理器PPC604在启用MMU、建立页表及TLB管理上有较大不同,因此,在移植的时候,译者查阅了一些资料并请教了这方面有经验的技术专家。
译者遇到的第三个比较棘手的问题是为每个object建立一个“调用接口”。每个object编译链接成一个独立的可执行程序,因此该接口的作用与操作系统提供的系统调用非常类似,其他object只需在编译时链接某一object提供的接口模块,在运行时即可调用到实现在该object中的真正代码。这就把编译器内部的name-mangling方法和运行时地址空间切换暴露了出来,也因而给译者的移植过程带来了很大麻烦。
译者的项目移植中,最后一个花费较多时间的问题是堆栈环境。译者的项目在运行出错时会打印出函数调用的backtrace、栈内容和寄存器内容。在更换了操作系统和处理器后,译者仔细研读了系统V ABI(PowerPC)和PowerPC EABI的标准以及处理器手册,以确定我们的代码是否遵循这些标准或者前后之间的区别,并做相应修改。
在译者的项目移植过程中,每遇到一个问题,基本上都会想到本书给出的一些指导方法。虽然本书讲述的是从UNIX系统移植到Linux系统,但是移植思想和方法都是相通的,只是具体的内容不同而已。总体说来,本书是一本比较实用的项目移植参考手册。
参与本书翻译的还有高新扬、齐永升、董晓虎、申展、吴青山、闫志会、杨新征、康华和张琦。由于译者知识水平所限,难免有翻译不当之处,敬请读者批评指正。对本书的任何意见和建议,都可以发送到zhdtian@vip.sina.com与译者进行交流。...
张 昕
2007年1月
序言
一直以来,Linux只是在大学中广泛应用。直到几年前许多大公司开始支持和接纳它,Linux才开始在企业应用中快速成长。经过几年的逐步发展,Linux在很多领域,例如电信、政府、生产制造等,已经基本成长为一个企业级的操作系统。
最近,关于Linux在很多应用中被加速采用的消息,更是遍布各种商业杂志。同时,大型调查公司Forrester Research的调查报告称,Linux是当前增长最快的操作系统。在被调查的140个北美公司中,有53%的公司把关键的应用程序运行在Linux上1,有52%的公司在Linux上运行新的应用程序,有44%的公司在把老的应用程序移植到新的硬件上时,选择在Linux上运行。
由SG Cowen公司所做的另一个类似的调查2表明,Linux越来越多地被选为首选的操作系统。因此,开发人员需要一本简明的、有条理的书籍来描述Linux和UNIX操作系统(例如Solaris、HP-UX及AIX)的区别。熟悉在Solaris、HP-UX和AIX等UNIX操作系统上编写程序的软件开发人员,现在也需要学习怎样在Linux上编程。
本书讲述的是怎样把应用程序移植到Linux环境上运行,读者对象包括开发人员、应用程序架构师以及项目经理:
·对于开发人员,本书详细描述了当前IT行业中广泛应用的各种UNIX操作系统间的区别。
·对于应用程序架构师,本书帮助确定应用程序的哪些模块最适合Linux操作系统。
·对于项目经理,本书描述了在把程序移植到Linux上时需要做的工作。
本书的组织结构
第1章“项目移植思考”,是对现有项目管理资料的一个补充,指出在项目移植前和移植过程中,项目经理和应用程序架构师需要考虑的具体任务。该章介绍在移植项目时所使用的移植过程和方法。移植过程中的每一步都是后面章节展开论述的基础。
第2章“调查”,讲述了移植过程中的第一步。概括描述Linux操作系统环境,包括在Linux上可用的编译器、GNU二进制工具、Java环境、Shell以及打包工具。在第1章中的调查问卷的帮助下,你可以评估要移植的应用程序从而确定移植工作的级别。在该章的末尾,有一个项目管理任务的检查列表,可以帮助你确定项目移植的初步任务。
第3章“分析”,在更深的层次上讲述了如何调查应用程序的架构。与第2章类似,该章也是在检查Linux可用的技术特性,包括Linux提供什么样的应用编程接口(API)和库函数,如何实现库的版本化,以及大页面支持等系统特性。每一个主题都让移植工程师确切知道应用程序可以使用的Linux所提供的功能和特性。为了尽可能地降低风险,在“分析”这一步我们不介绍移植过程中可能出现的已知或未知的变化。..
第4章“移植Solaris应用程序”、第5章“移植AIX应用程序”和第6章“移植HP-UX应用程序”,是本书的三个核心章节。每一章都全面详细地描述了应用程序所在的源系统(Solaris、AIX或HP-UX)和目标系统(Linux)的区别和相似性。每一章所讲述的内容包括:对标准的支持、编译器选项、链接器选项、系统调用的比较、库调用的比较,以及线程等。针对移植应用程序到Linux上时可能出现的问题,每一章都能帮助工程师快速找到答案。这些章节回答了类似下面的常见问题:
·我的应用程序调用的API在Linux上是否存在?
·Linux上的POSIX线程和Solaris线程有什么区别?
第7章“测试和调试”,讲述了Linux上的调试和性能监测工具。当移植工作进入到测试和调试阶段后,移植工程师将会遇到从软件bug到性能瓶颈等各种各样的问题。本章讲述了可以帮助移植工程师解决这些问题的工具,包括调试工具(例如GNU调试器)、内存泄漏工具、cscope和性能跟踪工具等。同时,该章还提供了可以下载这些工具的网址。
附录部分包括了API表、编译器和连接器选项,并且还讲述了运行在POWER架构上的Linux(也就是说,讲述了向运行在IBM POWER架构的Linux上移植程序时的区别)。
如何使用本书
你可以用多种方法来阅读这本书,但是我们推荐从第1章开始阅读,这样就可以理解我们的方法和思路,然后再继续阅读第2、3章。当进入移植这一步时,可根据你要移植的应用程序所在的源系统,从第4、5、6章中选择对应的章节阅读。
另外一种阅读本书的方法是,跳过第1、2、3章,直接阅读第4、5、6章中的任意一章。用这种方法阅读本书,可以对已经处在移植过程中的项目提供一个参考资料。