越来越多的开发人员、架构师和项目经理均面临着把UNIX上的C、C++和Java应用程序移植到Linux上的挑战。本书可以完整地指导你从当今最常用的UNIX平台(Solaris、HP-UX,和AIX)上把程序移植到Linux上。
本书的三位作者是IBM最有经验的Linux移植专家,他们将带领你走完整个项目移植过程:调查﹑分析﹑移植和测试。他们给出了一个从开始到完成的移植方法,对关键任务的切实讨论,以及评估新项目时用到的问卷。按照本书的方法,你可以发现Linux在API、库函数、版本化、系统特性和工具等方面所提供的功能以及对你的项目的影响。另外,作者还详细讲述了每个独立的UNIX平台上特有的问题和最实用的解决方法。
本书讲述怎样把应用程序移植到Linux环境上运行,是一本综合的开发和解决问题的参考手册。内容包括:理解Linux环境,GNU二进制工具,Java环境、shell、打包工具等;揭示并确定项目的未知因素、可变因素及其他风险,处理具体平台的区别,标准、编译器、链接器、版本化、系列/库调用、线程等;使用GNU调试器及Linux内存泄露和性能跟踪工具测试和调试移植后的应用程序,UNIX和Linux上API、编译器和连接器选项的快速索引,以及IBM POWER结构特有的移植问题。
本书适合软件开发人员、应用程序架构师,以及项目经理等参考使用。
译者序
序言
致谢
关于作者
第1章 项目移植思考
1.1 软件程序商业过程
1.2 移植过程
1.3 定义项目范围和目标
1.4 估计
1.5 创建项目移植进度表
1.6 从商业角度看移植过程
1.7 带注解的技术调查问卷样例
1.8 小结
第2章 调查
2.1 编译器
2.2 Java环境
2.3 编译环境
2.4 Linux Shell
2.5 打包
2.6 项目管理任务
2.7 小结
第3章 分析
3.1 Linux标准
3.2 GNU libc库
3.3 GNU科学库
3.4 共享库
3.5 库版文化
3.6 动态链接器(运行时链接器)
3.7 系统调用
3.8 大页面支持
3.9 Native POSIX线程库(NPTL)
3.10 国际化(I18N)和本地化
3.11 大小端环境
3.12 从32位移植到64位
3.13 小结
第4章 标称Sholaris应用程序
4.1 准备工作
4.2 常见的区别
4.3 编译器
4.4 链接器
4.5 移植shell脚本到Linux
4.6 国际化和本地化
4.7 Make
4.8 调试器
4.9 线程
4.10 信号
4.11 系统调用
4.12 系统库
4.13 solaris和Linux API
4.14 科学库
4.15 大页面支持
4.16 solaris一些不可移植的编程用法
4.17 小结
第5章 移植AIX应用程序
5.1 准备工作
5.2 常见的区别
5.3 编译器
5.4 Make
5.5 链接器
5.6 AIX和Linux创建共享库的比较
5.7 动态装载
5.8 AIX和Linux上模板实例化的区别
5.9 C++filt工具
5.10 系统API:AIX/Liunx
5.11 部分AIX/Liunx系统API之间的比较
5.12 AIX上的一些标准的编程用法
5.13 信号
5.14 网络编程
5.15 进程间通信(IPC)
5.16 POSIX线程
5.17 大页面支持
5.18 通用API
5.19 小结
第6章 移植HP-UX应用程序
6.1 准备工作
6.2 常见的区别
6.3 编译器
6.4 链接器
6.5 库版文化
6.6 动态链接和共享库
6.7 移植shell脚本到Linux
6.8 国际化(118N)
6.9 软件开发工具
6.10 线程
6.11 信号
6.12 HP-UX上的系统调用Linux上的对应调用
6.13 系统库
6.14 GNU科学库
6.15 HP-UX和Linux PAI
6.16 进程间通信
6.17 小结
第7章 测试和调试
7.1 使用GNU调试器
7.2 strace和trace
7.3 cscope工具
7.4 glibc调试支持
7.5 内存调试工具
7.6 静态程序检查器
7.7 线程跟踪工具
7.8 性能监测工具
7.9 小结
附录A Solaris到Linux参考表
附录B AIX到Linux参考表
附录C HP-UX到Linux参考表
附录D POWER上的Linux
附录E gprof helper
附录F IBM zSeries大型机相关的移植问题
附录G Solaris到Linux移植:系统管理员指南