《UNIX到Linux的移植》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)门多萨(Mendoza,A.),(美)斯卡沃坦纳德(Skawratananond,C,),(美)沃科(Walker,A.)著;张昕等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2007
  • ISBN:7111209117
  • 页数:408 页
图书介绍:本书讲述怎样把应用程序移植到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

1.4.7搭建测试环境 8

1.4.8用户接口需求 8

1.5创建项目移植进度表 9

1.6从商业角度看移植过程 10

1.7带注解的技术调查问卷样例 10

1.7.1平台相关的内容 10

1.7.2应用程序相关的内容 11

1.7.3数据库内容 13

1.7.4项目移植时间进度内容 14

1.7.5测试相关的内容 14

1.7.6项目移植的执行内容 15

1.8小结 15

第2章 调查 16

2.1编译器 16

2.1.1GNUgccC编译器 16

2.1.2GNUg++(C++)编译器 17

2.1.3GNUg77FORTRAN编译器 18

2.1.4GNUJava编译器 19

2.1.5GNUCOBOL 19

2.1.6其他编译器 19

2.2Java环境 19

2.3编译环境 20

2.3.1gmake 20

2.3.2GNU二进制工具 20

2.3.3GNUas 21

2.3.4集成开发环境 23

2.4LinuxShell 23

2.5打包 23

2.5.1用RPM打包应用程序 24

2.5.2RPM的基本用法 24

2.5.3LSB推荐的基准打包格式 25

2.6项目管理任务 25

2.7小结 26

第3章 分析 28

3.1Linux标准 28

3.2GNUlibc库 29

3.3GNU科学库 30

3.4共享库 31

3.5库版本化 32

3.5.1外部库版本化 32

3.5.2符号版本化 34

3.6动态链接器(运行时链接器) 39

3.6.1编程接口 40

3.6.2延迟重定位 42

3.6.3初始化和终止化函数 43

3.7系统调用 43

3.8大页面支持 43

3.9NativePOSIX线程库(NPTL) 48

3.10国际化(118N)和本地化 49

3.10.1iconv支持 50

3.10.2如何创建消息目录 53

3.11大小端环境 54

3.12从32位移植到64位 55

3.12.1常见的移植错误 56

3.12.2最优方法 57

3.13小结 57

第4章 移植Solaris应用程序 59

4.1准备工作 59

4.1.1搭建移植系统 59

4.1.2搭建代码修改管理系统 59

4.1.3搭建编译系统 60

4.2常见的区别 60

4.2.1C语言 61

4.2.2C++语言 61

4.2.3GNUC/C++语言 61

4.2.4Java语言 61

4.2.5线程 61

4.2.6所支持的标准之间的比较 61

4.3编译器 62

4.3.1C编译器 63

4.3.2C编译器选项 63

4.3.3C++编译器选项 69

4.3.4GNUg++的模板实例化 76

4.3.5编译32位或64位目标文件 77

4.3.6编译器的优化和性能选项 78

4.3.7Linux平台上的命名空间选择 78

4.4链接器 79

4.4.1输出映射 82

4.4.2链接器工具 82

4.4.3共享库 82

4.4.4库版本化 83

4.4.5动态链接器 83

4.5移植shell脚本到Linux 83

4.6国际化和本地化 84

4.7Make 85

4.7.1为C++语言内建的Makefile变量 86

4.7.2库依赖 86

4.7.3空规则 86

4.7.4当前目标 86

4.7.5SCCS和RCS文件 87

4.7.6有条件地给宏赋值 87

4.7.7模式替换宏的引用 87

4.7.8VPATH 87

4.7.9命令执行 88

4.7.10特殊目标 88

4.7.11环境变量 88

4.7.12退出状态 89

4.8调试器 89

4.9线程 89

4.9.1Solarislibthread与Linuxlibpthread 89

4.9.2Solarislibpthread与Linuxlibpthread 91

4.9.3取消点 94

4.9.4C++异常和Linux线程 95

4.10信号 98

4.10.1信号动作 98

4.10.2简单信号 99

4.10.3Linux的信号支持 100

4.10.4POSIX信号捕获函数 102

4.10.5信号集 102

4.10.6信号信息 103

4.10.7kill() 104

4.11系统调用 104

4.11.1open() 104

4.11.2fcntl() 105

4.11.3dirent 107

4.11.4CPU亲和性(Affinity) 108

4.11.5fork() 108

4.12系统库 108

4.13Solaris和LinuxAPI 108

4.13.1内存管理 109

4.13.2进程间通信(IPC) 109

4.13.3内存布置优化(MPO) 114

4.13.4vfstab 115

4.13.5posix_spawn()和posix_spwawnp() 115

4.13.6plock() 115

4.13.7waitpid() 115

4.14科学库 116

4.15大页面支持 117

4.16Solaris上一些不可移植的编程用法 117

4.17小结 117

第5章 移植AIX应用程序 119

5.1准备工作 119

5.1.1搭建移植系统 119

5.1.2搭建代码修改管理系统 119

5.1.3搭建编译系统 120

5.2常见的区别 120

5.2.1C语言 120

5.2.2C++语言 121

5.2.3GNUC/C++语言 121

5.2.4Java语言 121

5.2.5线程 121

5.2.6所支持的标准之间的比较 121

5.3编译器 122

5.4Make 130

5.5链接器 131

5.5.1链接器的不兼容性 131

5.5.2链接器:从AIX移植到Linux参考手册 133

5.6AIX和Linux创建共享库的比较 133

5.7动态装载 134

5.8AIX和Linux上模板实例化的区别 135

5.8.1使用#pragma或#include 135

5.8.2GNU中其他可用的模板选项 138

5.9C++filt工具 138

5.10系统API:AIX/Linux 139

5.11部分AIX/Linux系统API之间的比较 143

5.11.1getfsent()、getfsfile()、getfstype()、getfsspec() 144

5.11.2ioctl() 145

5.11.3read()、write() 146

5.11.4confstr() 148

5.11.5opendir() 148

5.11.6readdir() 149

5.11.7fcntl() 149

5.11.8llseek()、lseek()、lseek64() 153

5.11.9uname) 154

5.11.10syslog()、closelog()、openlog() 154

5.11.11swapoff()、swapon() 155

5.11.12acct() 156

5.11.13mmap()、mmap64()、munmap() 157

5.11.14pread()、pwrite() 159

5.11.15stat()、lstat()、fstat() 160

5.11.16ptrace() 161

5.11.17setgid()、setregid() 163

5.11.18sync() 163

5.11.19wait3()、wait4() 164

5.11.20getcwd() 165

5.11.21mount()、umount()、vmount() 166

5.11.22readv()、writev() 169

5.11.23select() 170

5.11.24reboot() 172

5.11.25chroot() 173

5.11.26fstatfs()、statfs() 174

5.11.27poll() 176

5.11.28quotactl() 177

5.12AIX上的一些非标准的编程用法 179

5.13信号 180

5.13.1信号动作 180

5.13.2简单信号 180

5.14网络编程 185

5.15进程间通信(IPC) 186

5.15.1信号量 186

5.15.2系统V信号量集 187

5.15.3消息队列 188

5.15.4共享内存 190

5.16POSIX线程 191

5.16.1Linux和AIX的线程模型比较 191

5.16.2内核空间线程 192

5.16.3用户空间线程 192

5.16.4AIX和LinuxPOSIX线程交叉对比 192

5.17大页面支持 195

5.18通用API 195

5.19小结 195

第6章 移植HP-UX应用程序 198

6.1准备工作 198

6.1.1搭建移植系统 198

6.1.2搭建代码修改管理系统 198

6.1.3搭建编译环境 199

6.2常见的区别 199

6.2.1C语言 199

6.2.2C++语言 200

6.2.3GNUC/C++语言 200

6.2.4Java语言 200

6.2.5线程 200

6.2.6所支持标准之间的比较 200

6.3编译器 201

6.3.1C编译器选项 202

6.3.2C++编译器选项 205

6.3.3GNUg++的模板实例化 208

6.3.4编译32/64位二进制程序 210

6.3.5编译器优化和性能选项 210

6.3.6使用GNU进行移植和编译 211

6.3.7Linux平台上的命名空间选择 212

6.4链接器 213

6.4.1输出映射 214

6.4.2链接器工具 214

6.5库版本化 214

6.5.1HP-UX上的库版本化 214

6.5.2Linux上的库版本化 215

6.6动态链接和共享库 215

6.7移植shell脚本到Linux 216

6.8国际化(118N) 217

6.9软件开发工具 220

6.9.1Makefile语法 221

6.9.2调试器 222

6.10线程 223

6.10.1HP-UX和Linux上的线程支持 224

6.10.2HP-UXDCE和POSIX线程的区别 227

6.10.3调试Linux线程 228

6.10.4C++异常和Linux线程 233

6.10.5链接线程安全的库 239

6.11信号 239

6.11.1信号动作 239

6.11.2简单信号 240

6.11.3信号发送 241

6.11.4Linux的信号支持 242

6.11.5POSIX信号捕获函数 242

6.11.6信号信息 243

6.11.7信号默认动作 245

6.12HP-UX上的系统调用和Linux上的对应调用 246

6.12.1检查POSIXAPI支持 246

6.12.2检查Linux内核版本 251

6.13系统库 251

6.14GNU科学库 252

6.15HP-UX和LinuxAPI 253

6.15.1glibc版本 253

6.15.2glibc遵循的标准 254

6.15.3HP-UX上的一些不可移植的编程用法 254

6.16进程间通信 254

6.16.1管道 255

6.16.2FIFO 255

6.16.3POSIX消息队列 255

6.16.4POSIX信号量 256

6.16.5POSIX共享内存 257

6.16.6系统V共享内存 257

6.16.7系统V消息 257

6.16.8系统V信号量 258

6.17小结 258

第7章 测试和调试 260

7.1使用GNU调试器 260

7.1.1编译可以使用GDB的程序 260

7.1.2调用GDB 261

7.1.3GDB基本命令 261

7.1.4调试多进程 262

7.1.5调试多线程应用程序 263

7.1.6停止多线程程序 266

7.1.7GDB初始化文件 267

7.1.8GDB和信号 267

7.1.9GDB的图形化前端 269

7.2strace和ltrace 270

7.3cscope工具 270

7.4glibc调试支持 272

7.5内存调试工具 274

7.5.1ElectricFence 274

7.5.2GNU/Linuxmtrace、mcheck、MALLOCCHECK 275

7.5.3Mpatrol 276

7.5.4dmalloc 277

7.5.5valgrind 277

7.5.6RationalPurify 278

7.5.7Insure++ 278

7.6静态程序检查器 279

7.6.1Splint 279

7.6.2CodeSonar 279

7.7线程跟踪工具 279

7.8性能监测工具 280

7.8.1内部视角 280

7.8.2外部视角 286

7.8.3其他工具 290

7.9小结 292

附录ASolaris到Linux参考表 293

附录BAIX到Linux参考表 319

附录CHP-UX到Linux参考表 334

附录DPOWER上的Linux 384

附录Egprofhelper 387

附录FIBMzSeries大型机相关的移植问题 390

附录GSolaris到Linux移植:系统管理员指南 397