频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

《UNIX到Linux的移植》目录

作者: 张昕 出处:机械工业出版社  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2007-04-07 10:31
关 键 词:Unix  linux  AIX  Solaris  系统移植
阅读提示:《UNIX到Linux的移植》是在讲述怎样把应用程序移植到Linux环境上运行,它的读者对象包括开发人员、应用程序架构师,以及项目经理:开发人员需要一本简明的、有条理的书籍来描述Linux和UNIX操作系统的区别,例如Solaris,HP-UX,以及AIX。熟悉在Solaris,HP-UX和AIX等UNIX操作系统上编写程序的软件开发人员现在也需要学习怎样在Linux上编程。


目录
1 移植项目思考 19
1.1 软件程序商业过程 19
1.2 移植过程 20
1.2.1 调查 20
1.2.2 分析 21
1.2.3 移植 21
1.2.4 测试 22
1.2.5 支持 22
1.3 定义项目范围和目标 22
1.4 估计 24
1.4.1 技能水平和移植经验 24
1.4.2 编译器 25
1.4.3 第三方软件和中间件的可用性 25
1.4.4 编译环境和工具 25
1.4.5 平台依赖的结构 26
1.4.6 平台/硬件依赖的代码 26
1.4.7 搭建测试环境 26
1.4.8 用户接口需求 27
1.5 创建项目移植进度表 28
1.6 从商业角度看移植过程 28
1.7 带注解的技术调查问卷样例 29
1.7.1 平台相关的内容 29
1.7.2 应用程序相关的内容 29
1.7.3 数据库内容 31
1.7.4 项目移植时间进度内容 32
1.7.5 测试相关的内容 32
1.7.6 项目移植的执行内容 33
1.8 小结 33
2 调查 34
2.1 编译器 34
2.1.1 GNU gcc C编译器 34
2.1.2 GNU g++ (C++)编译器 35
2.1.3 GNU g77 FORTRAN编译器 36
2.1.4 GNU Java编译器(注释8) 37
2.1.5 GNU COBOL 37
2.1.6 其他编译器 37
2.2 Java环境 38
2.3 编译环境 38
2.3.1 gmake 38
2.3.2 GNU二进制工具(binutils) 39
2.3.2.1 GNU ld 39
2.3.3 GNU as 39
2.3.4 集成开发环境 41
2.4 Linux Shell 41
2.5 打包 42
2.5.1 用RPM打包应用程序 42
2.5.2 RPM的基本用法 43
2.5.2.1 rpm -i 43
2.5.2.2 rpm -e 43
2.5.2.3 rpm -U 44
2.5.2.4 rpm -q 44
2.5.2.5 rpm -V 44
2.5.3 LSB(Linux Standard Base)推荐的基准打包格式 44
2.6 项目管理任务 44
2.7 小结 46
3 分析 47
3.1 Linux标准 47
3.2 GNU libc库 48
3.2.1 glibc遵循的标准 49
3.3 GNU科学库 50
3.4 共享库 51
3.5 库版本化(注释8,9) 51
3.5.1 外部库版本化 51
3.5.2 符号版本化 53
3.6 动态链接器(运行时链接器) 56
3.6.1 编程接口 57
3.6.2 延迟重定位(Lazy Relocation) 57
3.6.3 初始化(initializing)和终止化(finalizing)函数 58
3.7 系统调用 58
3.8 大页面支持 59
3.9 Native POSIX线程库(Native POSIX Threads Library,简写作NPTL) 60
3.9.1 最大线程数 61
3.10 国际化(I18N)(注释18)和本地化 61
3.10.1 iconv支持 63
3.10.2 如何创建消息目录(message catalog)(注释19) 63
3.11 大小端(Big/Little-Endian,也叫字节序)环境 64
3.12 从32位移植到64位 65
3.12.1 常见的移植错误 66
3.12.2 最优方法 67
3.13 小结 67
4 移植Solaris应用程序 68
4.1 准备工作 68
4.1.1 搭建移植系统 68
4.1.2 搭建代码修改管理系统 69
4.1.3 搭建编译系统 69
4.2 常见的区别 69
4.2.1 C语言 70
4.2.2 C++语言 70
4.2.3 GNU C/C++语言 70
4.2.4 Java语言 71
4.2.5 线程 71
4.2.6 所支持的标准之间的比较 71
4.3 编译器 72
4.3.1 C编译器 72
4.3.2 C编译器选项 72
4.3.3 C++编译器选项 82
4.3.4 GNU g++的模板实例化 92
4.3.5 编译32位或64位目标文件 92
4.3.6 编译器的优化和性能选项 92
4.3.7 Linux平台上的命名空间选择 93
4.4 链接器 94
4.4.1 输出映射 99
4.4.2 链接器工具 99
4.4.3 共享库 100
4.4.4 库版本化 100
4.4.5 动态链接器(运行时链接器) 101
4.5 移植shell脚本到Linux 101
4.6 国际化和本地化 102
4.7 Make 102
4.7.1 为C++语言内建的Makefile变量 104
4.7.2 库依赖 104
4.7.3 空规则 104
4.7.4 当前目标 104
4.7.5 SCCS和RCS文件 105
4.7.6 有条件地给宏赋值 105
4.7.7 模式替换宏的引用 105
4.7.8 VPATH 105
4.7.9 命令执行 106
4.7.10 特殊目标 106
4.7.11 环境变量 107
4.7.12 退出状态 107
4.8 调试器 108
4.9 线程 108
4.9.1 Solaris libthread与Linux libpthread 108
4.9.2 Solaris libpthread与Linux libpthread 110
4.9.3 取消点(Cancellation Points) 113
4.9.4 C++异常和Linux线程 114
4.10 信号 115
4.10.1 信号动作(Actions) 116
4.10.2 简单信号 116
4.10.3 Linux的信号支持 117
4.10.4 POSIX信号捕获函数 119
4.10.5 信号集 120
4.10.6 信号信息 120
4.10.7 kill() 122
4.11 系统调用 122
4.11.1 open() 122
4.11.2 fcntl() 124
4.11.3 dirent 126
4.11.4 CPU亲和性(Affinity) 127
4.11.5 fork() 127
4.12 系统库 127
4.13 Solaris和Linux API 128
4.13.1 内存管理 128
4.13.2 进程间通信(Interprocess Communication, IPC) 129
4.13.3 内存布置优化(Memory Placement Optimization, 简写作MPO) 134
4.13.4 vfstab 134
4.13.5 posix_spawn()和posix_spwawnp() 134
4.13.6 plock() 135
4.13.7 waitpid() 135
4.14 科学库 136
4.15 大页面支持 136
4.16 Solaris上的一些不可移植的编程用法 137
4.17 小结 137
5 移植AIX应用程序 139
5.1 准本工作 139
5.1.1 搭建移植系统 139
5.1.2 搭建代码修改管理系统 140
5.1.3 搭建编译系统 140
5.2 常见的区别 140
5.2.1 C语言 141
5.2.2 C++语言 141
5.2.3 GNU C/C++语言 141
5.2.4 Java语言 141
5.2.5 线程 141
5.2.6 所支持的标准之间的比较 142
5.3 编译器 143
5.3.1 调用编译器 144
5.4 Make 153
5.4.1 gmake条件分支语句 154
5.5 链接器 154
5.5.1 链接器的不兼容性 154
5.5.2 链接器:从AIX移植到Linux参考手册 156
5.6 AIX和Linux创建共享库的比较 157
5.7 动态装载 157
5.8 AIX和Linux上模板实例化的区别 158
5.8.1 使用#pragma或#include 159
5.8.2 GNU中其他可用的模板选项 160
5.9 C++filt工具 160
5.10 系统API:AIX/Linux 161
5.10.1 AIX/Linux I/O系统API 161
5.11 部分AIX/Linux系统API之间的比较 167
5.11.1 getfsent(), getfsfile(), getfstype(), getfsspec() 167
5.11.2 ioctl() 168
5.11.3 read(),write() 169
5.11.4 confstr() 171
5.11.5 opendir() 171
5.11.6 readdir() 172
5.11.7 fcntl() 172
5.11.8 llseek(), lseek(), lseek64() 177
5.11.9 uname() 178
5.11.10 syslog(), closelog(), openlog() 179
5.11.11 swapoff(), swapon() 179
5.11.12 acct() 180
5.11.13 mmap(), mmap64()(注释17), munmap() 181
5.11.14 pread(),pwrite() 184
5.11.15 stat(), lstat(), fstat() 185
5.11.16 ptrace() 185
5.11.17 setgid(), setregid() 187
5.11.18 sync() 188
5.11.19 wait3(), wait4() 189
5.11.20 getcwd() 190
5.11.21 mount(), umount, vmount() 191
5.11.22 readv(), writev() 194
5.11.23 select() 195
5.11.24 reboot() 196
5.11.25 chroot() 198
5.11.26 fstatfs(),statfs() 199
5.11.27 poll() 200
5.11.28 quotactl() 201
5.12 AIX上的一些非标准的编程用法 204
5.13 信号 205
5.13.1 信号动作 205
5.13.2 简单信号 205
5.14 网络编程 210
5.15 进程间通信(Interprocess Communication,简写作IPC) 211
5.15.1 信号量 211
5.15.2 系统V信号量集 213
5.15.3 消息队列(mqueue.h) 213
5.15.4 共享内存 215
5.16 POSIX线程 217
5.16.1 Linux和AIX的线程模型比较 217
5.16.2 内核空间线程 217
5.16.3 用户空间线程 218
5.16.4 AIX和Linux POSIX线程交叉对比 218
5.17 大页面支持 221
5.18 通用API 221
5.19 小结 222
6 移植HP-UX应用程序 224
6.1 准备工作 224
6.1.1 搭建移植系统 224
6.1.2 搭建代码修改管理系统 225
6.1.3 搭建编译环境 225
6.2 常见的区别 225
6.2.1 C语言 226
6.2.2 C++语言 226
6.2.3 GNU C/C++语言 226
6.2.4 Java语言 226
6.2.5 线程 226
6.2.6 所支持标准之间的比较 227
6.3 编译器 228
6.3.1 C编译器选项 229
6.3.2 C++编译器选项 232
6.3.3 GNU g++的模板实例化 235
6.3.4 编译32/64位二进制程序 236
6.3.5 编译器优化和性能选项 236
6.3.6 使用GNU进行移植和编译 238
6.3.7 Linux平台上的命名空间选择 238
6.4 链接器(注释21) 239
6.4.1 输出映射(export map) 240
6.4.2 链接器工具 240
6.5 库版本化 241
6.5.1 HP-UX上的库版本化 241
6.5.2 Linux上的库版本化(注释24) 242
6.6 动态链接和共享库 242
6.6.1 GNU libtool 244
6.7 移植shell脚本到Linux 244
6.8 国际化(I18N)(注释26) 245
6.8.1 iconv支持和消息目录(message catalog) 247
6.9 软件开发工具 247
6.9.1 Makefile语法 248
6.9.2 调试器 250
6.10 线程 250
6.10.1 HP-UX和Linux上的线程支持 251
6.10.2 HP-UX DCE和POSIX线程的区别 254
6.10.3 调试Linux线程 256
6.10.4 C++异常和Linux线程 258
6.10.5 链接线程安全的库 260
6.11 信号 260
6.11.1 信号动作(Acitions) 260
6.11.2 简单信号 261
6.11.3 信号发送 262
6.11.4 Linux的信号支持 262
6.11.5 POSIX信号捕获函数 263
6.11.6 信号信息 263
6.11.7 信号缺省动作 265
6.12 HP-UX上的系统调用和Linux上的对应调用 267
6.12.1 检查POSIX API支持 267
6.12.2 检查Linux内核版本 271
6.13 系统库 272
6.14 GNU科学库 273
6.15 HP-UX和Linux API 274
6.15.1 glibc版本 274
6.15.2 glibc遵循的标准 274
6.15.3 HP-UX上的一些不可移植的编程用法 275
6.16 进程间通信 275
6.16.1 管道 275
6.16.2 FIFO 276
6.16.3 POSIX消息队列 276
6.16.4 POSIX信号量 277
6.16.5 POSIX共享内存 278
6.16.6 系统V共享内存 278
6.16.7 系统V消息 279
6.16.8 系统V信号量 279
6.17 小结 280
7 测试和调试 281
7.1 使用GNU调试器 282
7.1.1 编译可以使用GDB的程序 282
7.1.2 调用GDB 282
7.1.3 GDB基本命令 283
7.1.4 调试多进程 283
7.1.5 调试多线程应用程序 284
7.1.6 停止多线程程序 285
7.1.7 GDB初始化文件 286
7.1.8 GDB和信号 286
7.1.9 GDB的图形化前端(front end) 288
7.2 strace和ltrace 288
7.3 cscope工具 288
7.3.1 Vim和cscope 289
7.4 glibc调试支持 290
7.5 内存调试工具 291
7.5.1 Electric Fence 291
7.5.2 GNU/Linux mtrace, mcheck, MALLOC_CHECK 292
7.5.3 Mpatrol 292
7.5.4 dmalloc 292
7.5.5 valgrind 293
7.5.6 Rational Purefy 293
7.5.7 Insure++ 294
7.6 静态程序检查器 294
7.6.1 Splint 294
7.6.2 CodeSonar 294
7.7 线程跟踪工具 295
7.8 性能监测工具 295
7.8.1 内部视角 295
7.8.2 外部视角 299
7.8.3 其他工具 302
7.9 小结 303
F.3 编译和链接 414
《表F-3》670 控制和优化栈增长的编译器选项 415
F.3.2 汇编代码 415
F.3.3 栈框架结构和链接 415
F.3.4 预先定义的符号 416
F.3.5 调试 416
F.4 字节序 416
F.5 其他区别 416
F.5.1 ASCII和EBCDIC问题 416
F.5.2 cpuinfo的格式 417
F.6 变参列表 417
F.7 从哪儿可以获取更多信息 417
F.8 致谢 417
G.1 打包任务 418
G.2 安装和升级任务 418
G.3 用户管理任务 420
G.4 网络管理和配置 420
G.5 NFS管理和配置 421
G.6 管理系统资源 422
G.7 磁盘和文件系统管理 422
G.8 交换分区管理 423
G.9 逻辑卷管理 423
G.10 常用的解决错误的方法 425
G.11 网络问题解决方法 427
G.12 配置文件及其他文件 427
G.13 可比较的命令 428



回书目   上一节   
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有