UNIX到Linux的移植

出版时间:2007-4  出版社:机械工业  作者:门多萨  页数:450  译者:张昕  
Tag标签:无  

内容概要

本书讲述怎样把UNIX环境下的应用程序移植到Linux环境上运行,是一本综合的开发和解决问题的参考手册 。本书详细描述了当前IT行业中被广泛应用的各种UNIX操作系统间的区别,其内容包括项目移植思考、调查、分析、移植Solaris应用程序、移植AIX应用程序、移植HP-UX应用程序、测试和调试。它的读者对象包括开发人员、应用程序架构师以及项目经理。本书的内容包括:	理解Linux环境: GNU二进制工具、Java环境、shell、打包工具等。	揭示并确定项目的未知因素、可变因素及其他风险。	处理具体平台的区别:标准、编译器、链接器、版本化、系统/库调用、线程等。	使用GNU调试器及Linux内存泄露和性能跟踪工具测试和调试移植后的应用程序。	包含了UNIX和Linux上API、编译器和链接器选项的快速索引,以及IBM POWER结构特有的移植问题。

作者简介

本书的三位作者是IBM最有经验的Linux移植专家,他们将带领你走完整个项目移植过程:调查﹑分析﹑移植和测试。他们给出了一个从开始到完成的移植方法,对关键任务的切实讨论,以及评估新项目时用到的问卷。按照本书的方法,你可以发现Linux在API、库函数、版本化、系统特性和

书籍目录

1	移植项目思考	191.1	软件程序商业过程	191.2	移植过程	201.2.1	调查	201.2.2	分析	211.2.3	移植	211.2.4	测试	221.2.5	支持	221.3	定义项目范围和目标	221.4	估计	241.4.1	技能水平和移植经验	241.4.2	编译器	251.4.3	第三方软件和中间件的可用性	251.4.4	编译环境和工具	251.4.5	平台依赖的结构	261.4.6	平台/硬件依赖的代码	261.4.7	搭建测试环境	261.4.8	用户接口需求	271.5	创建项目移植进度表	281.6	从商业角度看移植过程	281.7	带注解的技术调查问卷样例	291.7.1	平台相关的内容	291.7.2	应用程序相关的内容	291.7.3	数据库内容	311.7.4	项目移植时间进度内容	321.7.5	测试相关的内容	321.7.6	项目移植的执行内容	331.8	小结	332	调查	342.1	编译器	342.1.1	GNU gcc C编译器	342.1.2	GNU g++ (C++)编译器	352.1.3	GNU g77 FORTRAN编译器	362.1.4	GNU Java编译器(注释8)	372.1.5	GNU COBOL	372.1.6	其他编译器	372.2	Java环境	382.3	编译环境	382.3.1	gmake	382.3.2	GNU二进制工具(binutils)	392.3.2.1	GNU ld	392.3.3	GNU as	392.3.4	集成开发环境	412.4	Linux Shell	412.5	打包	422.5.1	用RPM打包应用程序	422.5.2	RPM的基本用法	432.5.2.1	rpm -i	432.5.2.2	rpm -e	432.5.2.3	rpm -U	442.5.2.4	rpm -q	442.5.2.5	rpm -V	442.5.3	LSB(Linux Standard Base)推荐的基准打包格式	442.6	项目管理任务	442.7	小结	463	分析	473.1	Linux标准	473.2	GNU libc库	483.2.1	glibc遵循的标准	493.3	GNU科学库	503.4	共享库	513.5	库版本化(注释8,9)	513.5.1	外部库版本化	513.5.2	符号版本化	533.6	动态链接器(运行时链接器)	563.6.1	编程接口	573.6.2	延迟重定位(Lazy Relocation)	573.6.3	初始化(initializing)和终止化(finalizing)函数	583.7	系统调用	583.8	大页面支持	593.9	Native POSIX线程库(Native POSIX Threads Library,简写作NPTL)	603.9.1	最大线程数	613.10	国际化(I18N)(注释18)和本地化	613.10.1	iconv支持	633.10.2	如何创建消息目录(message catalog)(注释19)	633.11	大小端(Big/Little-Endian,也叫字节序)环境	643.12	从32位移植到64位	653.12.1	常见的移植错误	663.12.2	最优方法	673.13	小结	674	移植Solaris应用程序	684.1	准备工作	684.1.1	搭建移植系统	684.1.2	搭建代码修改管理系统	694.1.3	搭建编译系统	694.2	常见的区别	694.2.1	C语言	704.2.2	C++语言	704.2.3	GNU C/C++语言	704.2.4	Java语言	714.2.5	线程	714.2.6	所支持的标准之间的比较	714.3	编译器	724.3.1	C编译器	724.3.2	C编译器选项	724.3.3	C++编译器选项	824.3.4	GNU g++的模板实例化	924.3.5	编译32位或64位目标文件	924.3.6	编译器的优化和性能选项	924.3.7	Linux平台上的命名空间选择	934.4	链接器	944.4.1	输出映射	994.4.2	链接器工具	994.4.3	共享库	1004.4.4	库版本化	1004.4.5	动态链接器(运行时链接器)	1014.5	移植shell脚本到Linux	1014.6	国际化和本地化	1024.7	Make	1024.7.1	为C++语言内建的Makefile变量	1044.7.2	库依赖	1044.7.3	空规则	1044.7.4	当前目标	1044.7.5	SCCS和RCS文件	1054.7.6	有条件地给宏赋值	1054.7.7	模式替换宏的引用	1054.7.8	VPATH	1054.7.9	命令执行	1064.7.10	特殊目标	1064.7.11	环境变量	1074.7.12	退出状态	1074.8	调试器	1084.9	线程	1084.9.1	Solaris libthread与Linux libpthread	1084.9.2	Solaris libpthread与Linux libpthread	1104.9.3	取消点(Cancellation Points)	1134.9.4	C++异常和Linux线程	1144.10	信号	1154.10.1	信号动作(Actions)	1164.10.2	简单信号	1164.10.3	Linux的信号支持	1174.10.4	POSIX信号捕获函数	1194.10.5	信号集	1204.10.6	信号信息	1204.10.7	kill()	1224.11	系统调用	1224.11.1	open()	1224.11.2	fcntl()	1244.11.3	dirent	1264.11.4	CPU亲和性(Affinity)	1274.11.5	fork()	1274.12	系统库	1274.13	Solaris和Linux API	1284.13.1	内存管理	1284.13.2	进程间通信(Interprocess Communication, IPC)	1294.13.3	内存布置优化(Memory Placement Optimization, 简写作MPO)	1344.13.4	vfstab	1344.13.5	posix_spawn()和posix_spwawnp()	1344.13.6	plock()	1354.13.7	waitpid()	1354.14	科学库	1364.15	大页面支持	1364.16	Solaris上的一些不可移植的编程用法	1374.17	小结	1375	移植AIX应用程序	1395.1	准本工作	1395.1.1	搭建移植系统	1395.1.2	搭建代码修改管理系统	1405.1.3	搭建编译系统	1405.2	常见的区别	1405.2.1	C语言	1415.2.2	C++语言	1415.2.3	GNU C/C++语言	1415.2.4	Java语言	1415.2.5	线程	1415.2.6	所支持的标准之间的比较	1425.3	编译器	1435.3.1	调用编译器	1445.4	Make	1535.4.1	gmake条件分支语句	1545.5	链接器	1545.5.1	链接器的不兼容性	1545.5.2	链接器:从AIX移植到Linux参考手册	1565.6	AIX和Linux创建共享库的比较	1575.7	动态装载	1575.8	AIX和Linux上模板实例化的区别	1585.8.1	使用#pragma或#include	1595.8.2	GNU中其他可用的模板选项	1605.9	C++filt工具	1605.10	系统API:AIX/Linux	1615.10.1	AIX/Linux I/O系统API	1615.11	部分AIX/Linux系统API之间的比较	1675.11.1	getfsent(), getfsfile(), getfstype(), getfsspec()	1675.11.2	ioctl()	1685.11.3	read(),write()	1695.11.4	confstr()	1715.11.5	opendir()	1715.11.6	readdir()	1725.11.7	fcntl()	1725.11.8	llseek(), lseek(), lseek64()	1775.11.9	uname()	1785.11.10	syslog(), closelog(), openlog()	1795.11.11	swapoff(), swapon()	1795.11.12	acct()	1805.11.13	mmap(), mmap64()(注释17), munmap()	1815.11.14	pread(),pwrite()	1845.11.15	stat(), lstat(), fstat()	1855.11.16	ptrace()	1855.11.17	setgid(), setregid()	1875.11.18	sync()	1885.11.19	wait3(), wait4()	1895.11.20	getcwd()	1905.11.21	mount(), umount, vmount()	1915.11.22	readv(), writev()	1945.11.23	select()	1955.11.24	reboot()	1965.11.25	chroot()	1985.11.26	fstatfs(),statfs()	1995.11.27	poll()	2005.11.28	quotactl()	2015.12	AIX上的一些非标准的编程用法	2045.13	信号	2055.13.1	信号动作	2055.13.2	简单信号	2055.14	网络编程	2105.15	进程间通信(Interprocess Communication,简写作IPC)	2115.15.1	信号量	2115.15.2	系统V信号量集	2135.15.3	消息队列(mqueue.h)	2135.15.4	共享内存	2155.16	POSIX线程	2175.16.1	Linux和AIX的线程模型比较	2175.16.2	内核空间线程	2175.16.3	用户空间线程	2185.16.4	AIX和Linux POSIX线程交叉对比	2185.17	大页面支持	2215.18	通用API	2215.19	小结	2226	移植HP-UX应用程序	2246.1	准备工作	2246.1.1	搭建移植系统	2246.1.2	搭建代码修改管理系统	2256.1.3	搭建编译环境	2256.2	常见的区别	2256.2.1	C语言	2266.2.2	C++语言	2266.2.3	GNU C/C++语言	2266.2.4	Java语言	2266.2.5	线程	2266.2.6	所支持标准之间的比较	2276.3	编译器	2286.3.1	C编译器选项	2296.3.2	C++编译器选项	2326.3.3	GNU g++的模板实例化	2356.3.4	编译32/64位二进制程序	2366.3.5	编译器优化和性能选项	2366.3.6	使用GNU进行移植和编译	2386.3.7	Linux平台上的命名空间选择	2386.4	链接器(注释21)	2396.4.1	输出映射(export map)	2406.4.2	链接器工具	2406.5	库版本化	2416.5.1	HP-UX上的库版本化	2416.5.2	Linux上的库版本化(注释24)	2426.6	动态链接和共享库	2426.6.1	GNU libtool	2446.7	移植shell脚本到Linux	2446.8	国际化(I18N)(注释26)	2456.8.1	iconv支持和消息目录(message catalog)	2476.9	软件开发工具	2476.9.1	Makefile语法	2486.9.2	调试器	2506.10	线程	2506.10.1	HP-UX和Linux上的线程支持	2516.10.2	HP-UX DCE和POSIX线程的区别	2546.10.3	调试Linux线程	2566.10.4	C++异常和Linux线程	2586.10.5	链接线程安全的库	2606.11	信号	2606.11.1	信号动作(Acitions)	2606.11.2	简单信号	2616.11.3	信号发送	2626.11.4	Linux的信号支持	2626.11.5	POSIX信号捕获函数	2636.11.6	信号信息	2636.11.7	信号缺省动作	2656.12	HP-UX上的系统调用和Linux上的对应调用	2676.12.1	检查POSIX API支持	2676.12.2	检查Linux内核版本	2716.13	系统库	2726.14	GNU科学库	2736.15	HP-UX和Linux API	2746.15.1	glibc版本	2746.15.2	glibc遵循的标准	2746.15.3	HP-UX上的一些不可移植的编程用法	2756.16	进程间通信	2756.16.1	管道	2756.16.2	FIFO	2766.16.3	POSIX消息队列	2766.16.4	POSIX信号量	2776.16.5	POSIX共享内存	2786.16.6	系统V共享内存	2786.16.7	系统V消息	2796.16.8	系统V信号量	2796.17	小结	2807	测试和调试	2817.1	使用GNU调试器	2827.1.1	编译可以使用GDB的程序	2827.1.2	调用GDB	2827.1.3	GDB基本命令	2837.1.4	调试多进程	2837.1.5	调试多线程应用程序	2847.1.6	停止多线程程序	2857.1.7	GDB初始化文件	2867.1.8	GDB和信号	2867.1.9	GDB的图形化前端(front end)	2887.2	strace和ltrace	2887.3	cscope工具	2887.3.1	Vim和cscope	2897.4	glibc调试支持	2907.5	内存调试工具	2917.5.1	Electric Fence	2917.5.2	GNU/Linux mtrace, mcheck, MALLOC_CHECK	2927.5.3	Mpatrol	2927.5.4	dmalloc	2927.5.5	valgrind	2937.5.6	Rational Purefy	2937.5.7	Insure++	2947.6	静态程序检查器	2947.6.1	Splint	2947.6.2	CodeSonar	2947.7	线程跟踪工具	2957.8	性能监测工具	2957.8.1	内部视角	2957.8.2	外部视角	2997.8.3	其他工具	3027.9	小结	303F.3 编译和链接	414《表F-3》670 控制和优化栈增长的编译器选项	415F.3.2 汇编代码	415F.3.3 栈框架结构和链接	415F.3.4 预先定义的符号	416F.3.5 调试	416F.4 字节序	416F.5 其他区别	416F.5.1 ASCII和EBCDIC问题	416F.5.2 cpuinfo的格式	417F.6 变参列表	417F.7 从哪儿可以获取更多信息	417F.8 致谢	417G.1 打包任务	418G.2 安装和升级任务	418G.3 用户管理任务	420G.4 网络管理和配置	420G.5 NFS管理和配置	421G.6 管理系统资源	422G.7 磁盘和文件系统管理	422G.8 交换分区管理	423G.9 逻辑卷管理	423G.10 常用的解决错误的方法	425G.11 网络问题解决方法	427G.12 配置文件及其他文件	427G.13 可比较的命令	428

图书封面

图书标签Tags

评论、评分、阅读与下载


    UNIX到Linux的移植 PDF格式下载


用户评论 (总计1条)

 
 

  •   没啥价值,都是比较粗浅的入门的知识
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7