书籍详情
GCC技术参考大全
作者:(美)Arthur Griffith著;胡恩华译;胡恩华译
出版社:清华大学出版社
出版时间:2004-06-01
ISBN:9787302088431
定价:¥59.00
购买这本书可以去
内容简介
本书内容特色:·在各种UNIX平台(包括Linux和BSD)上开发和部署软件·安装并使用自己的编译器编译C、C++、Objectivec、Fortran、Java和Ada·为众多平台生成本地可执行代码虽然在当今的计算机界中,正在进行的自由软件运动不一定是最重要的,但我们确实正处于一个巨大的变革的中心。软件的所有权正在由公司专有变为可根据任何目的自由获取和使用。目前,自由软件不仅包括程序语言编译程序和连接程序,而且还有大量的工具,图形化的用户界面环境,甚至包括整个操作系统。除此之外,还有一个事实就是所有的自由软件都是由GCC编译的,因此可否将GCC称作软件世界中最重要的一部分也就值得探讨了。当然,有很多种语言可用于编写程序,这些语言也都有很多编译程序,但这些编译程序中的绝大部分都是由GCC编写成并编译的。从某些方面来看,所有的自由软件都源起于GCC。有些计算机公司已经开始放弃自己的编译程序而选择简单安装GCC编译程序了。使用GCC是免费的,而且还能得到持续的功能扩展和维护。伴随着最近加入GCC家族的两种语言:Java和Ada:GCC编译程序的羽翼扩展得更大更广了。这使得GCC可用的语言达到6种:C、C++、Objective-C、Fortran、Java和Ada。而且它还在不断地开发其他语言,例如COBOL,如果有足够支持就会将这些语言也加入GCC。
作者简介
Arthur Griffith 从1997开始他的第一价编程工作,开发达编译程序、解释器、边接程序以及汇编器,曾作为小组成员为某些特殊用作的计算机开发过汇编器和连接程序。之后他加入PL/EXUS语言的编译程序的维护组。装下来的项目就是为SATS语言开发了交互式的解释器和编译程序。
目录
第1部分 自由软件编译程序
第1章 GCC简介 3
1.1 GNU 3
1.2 测量编译程序 4
1.3 命令行选项 4
1.4 平台 5
1.5 编译程序的功能 6
1.6 语言 7
1.6.1 C是基本语言 7
1.6.2 C++:第一个附加语言 7
1.6.3 Objective-C 8
1.6.4 Fortran 8
1.6.5 Java 8
1.6.6 Ada 8
1.6.7 不再支持Chill 9
1.7 部分列表 9
1.8 联系方式 11
第2章 查询与安装编译程序 14
2.1 二进制代码下载 15
2.2 FTP资源下载 15
2.3 CVS资源下载 17
2.3.1 以前的发布版 18
2.3.2 测试版 18
2.4 编译和安装GCC 19
2.4.1 安装过程 19
2.4.2 配置选项 20
2.5 binutils 29
2.6 Win32二进制安装 31
2.6.1 Cygwin 31
2.6.2 安装 31
2.7 运行测试包 32
第2部分 使用编译程序集合
第3章 预处理程序 37
3.1 指示字 37
3.1.1 #define 38
3.1.2 #error和#warning 41
3.1.3 #if,#elif,#else和#endif 41
3.1.4 #ifdef,#else和#endif 42
3.1.5 #include 43
3.1.6 #include_next 44
3.1.7 #line 44
3.1.8 #pragma和_Pragma 45
3.1.9 #undef 46
3.1.10 ## 46
3.2 预定义宏 47
3.3 只包含一次头文件 49
3.4 在出错消息中包含定位信息 50
3.5 去掉适当位置的源代码 50
3.6 产生make程序的描述文件 51
3.7 命令行选项和环境变量 51
第4章 编译C程序 53
4.1 编译基础 53
4.1.1 单源程序到可执行程序 54
4.1.2 源文件到目标文件 54
4.1.3 多源文件到可执行文件 55
4.1.4 预处理 55
4.1.5 生成汇编语言 56
4.1.6 创建静态库 56
4.1.7 创建共享库 57
4.1.8 重写命名约定 58
4.2 标准 59
4.3 C语言扩展 59
4.3.1 对齐 60
4.3.2 匿名联合 60
4.3.3 变长数组 61
4.3.4 零长度数组 61
4.3.5 属性 63
4.3.6 返回值的复合语句 68
4.3.7 条件操作数省略 69
4.3.8 枚举不完全类型 70
4.3.9 函数参数构造 70
4.3.10 函数内嵌 71
4.3.11 函数名 72
4.3.12 函数嵌套 72
4.3.13 函数原型 73
4.3.14 函数返回地址和堆栈框架 74
4.3.15 标识符 74
4.3.16 整数 75
4.3.17 更换关键字 75
4.3.18 标识地址 75
4.3.19 局部标识声明 76
4.3.20 左值表达式(lvalue) 77
4.3.21 具有可变参数的宏 77
4.3.22 字符串 78
4.3.23 指针算法 78
4.3.24 Switch/Case分支语句 78
4.3.25 typedef名字创建 79
4.3.26 typeof引用 80
4.3.27 联合强制类型转换 80
第5章 编译C++程序 82
5.1 编译基础 82
5.1.1 单源文件到可执行文件 82
5.1.2 多源文件到可执行文件 83
5.1.3 源文件到目标文件 84
5.1.4 预处理 85
5.1.5 生成汇编语言 85
5.1.6 创建静态库 85
5.1.7 创建共享库 87
5.2 C++语言的扩展功能 89
5.2.1 属性 89
5.2.2 头文件 90
5.2.3 函数名 90
5.2.4 接口与实现 91
5.2.5 操作符<?和>? 92
5.2.6 约束 93
5.3 编译程序操作 94
5.3.1 库 94
5.3.2 mangling名字 94
5.3.3 连接 97
5.3.4 编译模板实例化 98
第6章 编译Objective-C 99
6.1 编译基础 99
6.1.1 单独源文件到可执行程序 99
6.1.2 编译对象 100
6.1.3 创建静态连接库 102
6.1.4 创建共享库 104
6.2 Objective-C的简要介绍 105
6.2.1 预定义类型 105
6.2.2 创建接口声明 106
6.2.3 命名和mangling 106
第7章 编译Fortran程序 108
7.1 编译基础 108
7.1.1 单独源文件到可执行程序 108
7.1.2 多源文件到可执行程序 109
7.1.3 生成汇编语言 110
7.1.4 预处理 110
7.1.5 创建静态库 112
7.1.6 创建共享库 113
7.2 Ratfor 113
7.3 GNU Fortran扩展功能与变量 115
7.3.1 内在函数 115
7.3.2 源代码格式 115
7.3.3 注释 116
7.3.4 美元符号 116
7.3.5 大小写敏感 116
7.3.6 特殊Fortran 90功能 118
第8章 编译Java 123
8.1 编译基础 123
8.1.1 单一源文件到二进制可执行
程序 124
8.1.2 单一源文件到类文件 124
8.1.3 单一源文件到二进制目标文件 125
8.1.4 类文件到本地可执行程序 125
8.1.5 多源文件到二进制可执行文件 125
8.1.6 多输入文件到可执行程序 127
8.1.7 生成汇编语言 127
8.1.8 创建静态库 128
8.1.9 创建共享库 129
8.1.10 创建Jar文件 129
8.2 Java工具 130
8.2.1 gij 130
8.2.2 jar 131
8.2.3 gcjh 132
8.2.4 jcf-dump 134
8.2.5 jv-scan 134
8.2.6 jv-convert 135
8.2.7 grepjar 136
8.3 RMI 137
8.3.1 rmic 138
8.3.2 rmiregistry 139
8.4 属性 139
第9章 编译Ada程序 141
9.1 安装 141
9.2 编译基础 143
9.2.1 单独源文件到可执行程序 144
9.2.2 多源文件到可执行程序 145
9.2.3 源代码到汇编语言 146
9.3 选项 146
9.4 Ada工具 150
9.4.1 gnatbind 150
9.4.2 gnatlink 153
9.4.3 gnatmake 153
9.4.4 gnatchop 155
9.4.5 gnatxref 156
9.4.6 gnatfind 157
9.4.7 gnatkr 158
9.4.8 gnatprep 158
9.4.9 gnatls 159
9.4.10 gnatpsys和gnatpsta 161
第10章 混合语言 162
10.1 C++和C的混合 162
10.1.1 在C++中调用C 162
10.1.2 在C中调用C++ 163
10.2 混合Objective-C和C 164
10.2.1 在Objective-C中调用C 164
10.2.2 在C中调用Objective-C 165
10.3 混合Java和C++ 166
10.3.1 创建Java字符串并调用静态
方法 167
10.3.2 加载并实例化Java类 168
10.3.3 异常 170
10.3.4 CNI的数据类型 171
10.4 混合Java和C 171
10.4.1 具有本地方法的Java类 172
10.4.2 向本地方法传递参数 173
10.4.3 在C代码中调用Java类方法 175
10.5 混合Fortran和C 177
10.5.1 从Fortran中调用C 177
10.5.2 从C中调用Fortran 178
10.6 混合Ada和C 179
10.6.1 从Ada中调用C 180
10.6.2 从Ada中调用C(带参数) 181
第11章 国际化 184
11.1 翻译的例子 184
11.2 创建新的.po文件 186
11.3 函数gettext()的用法 189
11.3.1 静态字符串 189
11.3.2 从其他域中进行翻译 189
11.3.3 从其他域到指定类别的翻译 190
11.3.4 多重模式 190
11.3.5 来自其他域的多重模式 190
11.3.6 某个类别其他域的多重模式 190
11.4 合并两个.po文件 190
11.5 由.po文件生成二进制的.mo文件 192
第3部分 外设和内设
第12章 连接和库 197
12.1 目标文件和库 197
12.1.1 目录中的目标文件 197
12.1.2 静态库中的目标文件 198
12.1.3 动态库中的目标文件 200
12.2 连接程序的前端 200
12.3 定位库 201
12.3.1 在连接时定位库 201
12.3.2 运行时载入库 201
12.4 从共享库中载入函数 202
12.5 使用目标文件和库的工具程序 204
12.5.1 配置查找共享库 204
12.5.2 列举目标文件中的符号名 205
12.5.3 去除目标文件中的无用信息 207
12.5.4 列出共享库的依赖关系 208
12.5.5 显示目标文件的内部结构 209
第13章 使用GNU调试器 212
13.1 调试信息格式 212
13.1.1 STABS 212
13.1.2 DWARF 213
13.1.3 COFF 213
13.1.4 XCOFF 214
13.2 编译调试用程序 214
13.3 将程序载入调试器 215
13.4 执行事后检查 219
13.5 将调试器附带到运行程序上 220
13.6 命令总结 223
第14章 make和Autoconf 225
14.1 make 225
14.1.1 内部定义 227
14.1.2 如何编写makefile 228
14.1.3 make的选项 229
14.2 Autoconf 232
第15章 GNU汇编器 237
15.1 用命令行进行汇编 237
15.2 绝对、相对以及边界 239
15.3 内嵌汇编 240
15.4 汇编器指示字 243
第16章 交叉编译及窗体端口 254
16.1 目标机 254
16.2 创建交叉编译程序 255
16.2.1 安装本地编译程序 255
16.2.2 为目标机器建立binutils 256
16.2.3 安装目标机器的文件 257
16.2.4 可配置库libgcc1.a 257
16.2.5 构造交叉编译程序 257
16.2.6 运行交叉编译程序 258
16.3 MinGW 258
16.4 Cygwin 259
16.4.1 编译简单的Cygwin操作台
程序 259
16.4.2 编译Cygwin GUI程序 260
第17章 嵌入式系统 261
17.1 建立编译程序和连接程序 261
17.2 选择一种语言 262
17.3 GCC嵌入工具 263
17.3.1 命令行选项 263
17.3.2 诊断 264
17.3.3 汇编器代码 264
17.4 库 264
17.4.1 整顿标准库 265
17.4.2 为嵌入式系统设计的库 265
17.5 GNU连接程序脚本语言 265
17.5.1 脚本例子1 266
17.5.2 脚本例子2 267
17.5.3 其他脚本命令 268
第18章 编译程序输出 269
18.1 程序信息 269
18.1.1 解析树 269
18.1.2 头文件 270
18.1.3 程序需要的内存 271
18.1.4 时耗 272
18.1.5 C++中间树 272
18.1.6 C++类层次 273
18.2 有关makefile的信息 273
18.3 编译程序信息 274
18.3.1 编译时间 275
18.3.2 子进程开关 275
18.3.3 详细的编译程序调试信息 276
18.4 关于文件和目录的信息 279
第19章 实现一种语言 280
19.1 从前到后 280
19.2 词法扫视 281
19.2.1 简单的词法扫视程序 282
19.2.2 Lex的正则表达式 282
19.3 语法分析 283
19.4 创建解析树 288
19.5 连接后端与前端 289
第20章 寄存器传送语言 292
20.1 RTL insn 292
20.1.1 6种基本表达式代码 292
20.1.2 insn的类型和内容 294
20.2 模式和模式类 310
20.3 标志 312
第21章 机器相关的编译程序选项 314
21.1 机器列表 314
21.2 GCC命令行选项 315
21.2.1 Alpha选项 315
21.2.2 Alpha/VMS选项 320
21.2.3 ARC选项 320
21.2.4 ARM选项 320
21.2.5 AVR选项 325
21.2.6 CRIS选项 326
21.2.7 D30V选项 329
21.2.8 H8/300选项 330
21.2.9 HPPA选项 330
21.2.10 IA-64选项 332
21.2.11 Intel 386和AMD x86-64选项
334
21.2.12 Intel 960选项 339
21.2.13 M32R/D选项 340
21.2.14 M680x0选项 341
21.2.15 M68HClx选项 344
21.2.16 M88K选项 344
21.2.17 MCore选项 347
21.2.18 MIPS选项 348
21.2.19 MMIX选项 354
21.2.20 MN10200选项 355
21.2.21 MN10300选项 355
21.2.22 NS32K选项 356
21.2.23 PDP-11选项 358
21.2.24 RS/6000和PowerPC选项 359
21.2.25 RT选项 368
21.2.26 S/390和zSeries选项 369
21.2.27 SH选项 370
21.2.28 SPARC选项 372
21.2.29 System V选项 376
21.2.30 TMS320C3x/C4x选项 376
21.2.31 V850选项 379
21.2.32 VAX选项 380
21.2.33 Xstormy16选项 380
第4部分 附录
附录A GNU通用公共许可证 383
附录B 环境变量 389
附录C 命令行对照表 393
附录D 命令行选项 400
D.1 选项前缀 400
D.1.1 命令行的顺序 401
D.1.2 文件类型 401
D.2 选项字母顺序列表 402
附录E 术语表 480
第1章 GCC简介 3
1.1 GNU 3
1.2 测量编译程序 4
1.3 命令行选项 4
1.4 平台 5
1.5 编译程序的功能 6
1.6 语言 7
1.6.1 C是基本语言 7
1.6.2 C++:第一个附加语言 7
1.6.3 Objective-C 8
1.6.4 Fortran 8
1.6.5 Java 8
1.6.6 Ada 8
1.6.7 不再支持Chill 9
1.7 部分列表 9
1.8 联系方式 11
第2章 查询与安装编译程序 14
2.1 二进制代码下载 15
2.2 FTP资源下载 15
2.3 CVS资源下载 17
2.3.1 以前的发布版 18
2.3.2 测试版 18
2.4 编译和安装GCC 19
2.4.1 安装过程 19
2.4.2 配置选项 20
2.5 binutils 29
2.6 Win32二进制安装 31
2.6.1 Cygwin 31
2.6.2 安装 31
2.7 运行测试包 32
第2部分 使用编译程序集合
第3章 预处理程序 37
3.1 指示字 37
3.1.1 #define 38
3.1.2 #error和#warning 41
3.1.3 #if,#elif,#else和#endif 41
3.1.4 #ifdef,#else和#endif 42
3.1.5 #include 43
3.1.6 #include_next 44
3.1.7 #line 44
3.1.8 #pragma和_Pragma 45
3.1.9 #undef 46
3.1.10 ## 46
3.2 预定义宏 47
3.3 只包含一次头文件 49
3.4 在出错消息中包含定位信息 50
3.5 去掉适当位置的源代码 50
3.6 产生make程序的描述文件 51
3.7 命令行选项和环境变量 51
第4章 编译C程序 53
4.1 编译基础 53
4.1.1 单源程序到可执行程序 54
4.1.2 源文件到目标文件 54
4.1.3 多源文件到可执行文件 55
4.1.4 预处理 55
4.1.5 生成汇编语言 56
4.1.6 创建静态库 56
4.1.7 创建共享库 57
4.1.8 重写命名约定 58
4.2 标准 59
4.3 C语言扩展 59
4.3.1 对齐 60
4.3.2 匿名联合 60
4.3.3 变长数组 61
4.3.4 零长度数组 61
4.3.5 属性 63
4.3.6 返回值的复合语句 68
4.3.7 条件操作数省略 69
4.3.8 枚举不完全类型 70
4.3.9 函数参数构造 70
4.3.10 函数内嵌 71
4.3.11 函数名 72
4.3.12 函数嵌套 72
4.3.13 函数原型 73
4.3.14 函数返回地址和堆栈框架 74
4.3.15 标识符 74
4.3.16 整数 75
4.3.17 更换关键字 75
4.3.18 标识地址 75
4.3.19 局部标识声明 76
4.3.20 左值表达式(lvalue) 77
4.3.21 具有可变参数的宏 77
4.3.22 字符串 78
4.3.23 指针算法 78
4.3.24 Switch/Case分支语句 78
4.3.25 typedef名字创建 79
4.3.26 typeof引用 80
4.3.27 联合强制类型转换 80
第5章 编译C++程序 82
5.1 编译基础 82
5.1.1 单源文件到可执行文件 82
5.1.2 多源文件到可执行文件 83
5.1.3 源文件到目标文件 84
5.1.4 预处理 85
5.1.5 生成汇编语言 85
5.1.6 创建静态库 85
5.1.7 创建共享库 87
5.2 C++语言的扩展功能 89
5.2.1 属性 89
5.2.2 头文件 90
5.2.3 函数名 90
5.2.4 接口与实现 91
5.2.5 操作符<?和>? 92
5.2.6 约束 93
5.3 编译程序操作 94
5.3.1 库 94
5.3.2 mangling名字 94
5.3.3 连接 97
5.3.4 编译模板实例化 98
第6章 编译Objective-C 99
6.1 编译基础 99
6.1.1 单独源文件到可执行程序 99
6.1.2 编译对象 100
6.1.3 创建静态连接库 102
6.1.4 创建共享库 104
6.2 Objective-C的简要介绍 105
6.2.1 预定义类型 105
6.2.2 创建接口声明 106
6.2.3 命名和mangling 106
第7章 编译Fortran程序 108
7.1 编译基础 108
7.1.1 单独源文件到可执行程序 108
7.1.2 多源文件到可执行程序 109
7.1.3 生成汇编语言 110
7.1.4 预处理 110
7.1.5 创建静态库 112
7.1.6 创建共享库 113
7.2 Ratfor 113
7.3 GNU Fortran扩展功能与变量 115
7.3.1 内在函数 115
7.3.2 源代码格式 115
7.3.3 注释 116
7.3.4 美元符号 116
7.3.5 大小写敏感 116
7.3.6 特殊Fortran 90功能 118
第8章 编译Java 123
8.1 编译基础 123
8.1.1 单一源文件到二进制可执行
程序 124
8.1.2 单一源文件到类文件 124
8.1.3 单一源文件到二进制目标文件 125
8.1.4 类文件到本地可执行程序 125
8.1.5 多源文件到二进制可执行文件 125
8.1.6 多输入文件到可执行程序 127
8.1.7 生成汇编语言 127
8.1.8 创建静态库 128
8.1.9 创建共享库 129
8.1.10 创建Jar文件 129
8.2 Java工具 130
8.2.1 gij 130
8.2.2 jar 131
8.2.3 gcjh 132
8.2.4 jcf-dump 134
8.2.5 jv-scan 134
8.2.6 jv-convert 135
8.2.7 grepjar 136
8.3 RMI 137
8.3.1 rmic 138
8.3.2 rmiregistry 139
8.4 属性 139
第9章 编译Ada程序 141
9.1 安装 141
9.2 编译基础 143
9.2.1 单独源文件到可执行程序 144
9.2.2 多源文件到可执行程序 145
9.2.3 源代码到汇编语言 146
9.3 选项 146
9.4 Ada工具 150
9.4.1 gnatbind 150
9.4.2 gnatlink 153
9.4.3 gnatmake 153
9.4.4 gnatchop 155
9.4.5 gnatxref 156
9.4.6 gnatfind 157
9.4.7 gnatkr 158
9.4.8 gnatprep 158
9.4.9 gnatls 159
9.4.10 gnatpsys和gnatpsta 161
第10章 混合语言 162
10.1 C++和C的混合 162
10.1.1 在C++中调用C 162
10.1.2 在C中调用C++ 163
10.2 混合Objective-C和C 164
10.2.1 在Objective-C中调用C 164
10.2.2 在C中调用Objective-C 165
10.3 混合Java和C++ 166
10.3.1 创建Java字符串并调用静态
方法 167
10.3.2 加载并实例化Java类 168
10.3.3 异常 170
10.3.4 CNI的数据类型 171
10.4 混合Java和C 171
10.4.1 具有本地方法的Java类 172
10.4.2 向本地方法传递参数 173
10.4.3 在C代码中调用Java类方法 175
10.5 混合Fortran和C 177
10.5.1 从Fortran中调用C 177
10.5.2 从C中调用Fortran 178
10.6 混合Ada和C 179
10.6.1 从Ada中调用C 180
10.6.2 从Ada中调用C(带参数) 181
第11章 国际化 184
11.1 翻译的例子 184
11.2 创建新的.po文件 186
11.3 函数gettext()的用法 189
11.3.1 静态字符串 189
11.3.2 从其他域中进行翻译 189
11.3.3 从其他域到指定类别的翻译 190
11.3.4 多重模式 190
11.3.5 来自其他域的多重模式 190
11.3.6 某个类别其他域的多重模式 190
11.4 合并两个.po文件 190
11.5 由.po文件生成二进制的.mo文件 192
第3部分 外设和内设
第12章 连接和库 197
12.1 目标文件和库 197
12.1.1 目录中的目标文件 197
12.1.2 静态库中的目标文件 198
12.1.3 动态库中的目标文件 200
12.2 连接程序的前端 200
12.3 定位库 201
12.3.1 在连接时定位库 201
12.3.2 运行时载入库 201
12.4 从共享库中载入函数 202
12.5 使用目标文件和库的工具程序 204
12.5.1 配置查找共享库 204
12.5.2 列举目标文件中的符号名 205
12.5.3 去除目标文件中的无用信息 207
12.5.4 列出共享库的依赖关系 208
12.5.5 显示目标文件的内部结构 209
第13章 使用GNU调试器 212
13.1 调试信息格式 212
13.1.1 STABS 212
13.1.2 DWARF 213
13.1.3 COFF 213
13.1.4 XCOFF 214
13.2 编译调试用程序 214
13.3 将程序载入调试器 215
13.4 执行事后检查 219
13.5 将调试器附带到运行程序上 220
13.6 命令总结 223
第14章 make和Autoconf 225
14.1 make 225
14.1.1 内部定义 227
14.1.2 如何编写makefile 228
14.1.3 make的选项 229
14.2 Autoconf 232
第15章 GNU汇编器 237
15.1 用命令行进行汇编 237
15.2 绝对、相对以及边界 239
15.3 内嵌汇编 240
15.4 汇编器指示字 243
第16章 交叉编译及窗体端口 254
16.1 目标机 254
16.2 创建交叉编译程序 255
16.2.1 安装本地编译程序 255
16.2.2 为目标机器建立binutils 256
16.2.3 安装目标机器的文件 257
16.2.4 可配置库libgcc1.a 257
16.2.5 构造交叉编译程序 257
16.2.6 运行交叉编译程序 258
16.3 MinGW 258
16.4 Cygwin 259
16.4.1 编译简单的Cygwin操作台
程序 259
16.4.2 编译Cygwin GUI程序 260
第17章 嵌入式系统 261
17.1 建立编译程序和连接程序 261
17.2 选择一种语言 262
17.3 GCC嵌入工具 263
17.3.1 命令行选项 263
17.3.2 诊断 264
17.3.3 汇编器代码 264
17.4 库 264
17.4.1 整顿标准库 265
17.4.2 为嵌入式系统设计的库 265
17.5 GNU连接程序脚本语言 265
17.5.1 脚本例子1 266
17.5.2 脚本例子2 267
17.5.3 其他脚本命令 268
第18章 编译程序输出 269
18.1 程序信息 269
18.1.1 解析树 269
18.1.2 头文件 270
18.1.3 程序需要的内存 271
18.1.4 时耗 272
18.1.5 C++中间树 272
18.1.6 C++类层次 273
18.2 有关makefile的信息 273
18.3 编译程序信息 274
18.3.1 编译时间 275
18.3.2 子进程开关 275
18.3.3 详细的编译程序调试信息 276
18.4 关于文件和目录的信息 279
第19章 实现一种语言 280
19.1 从前到后 280
19.2 词法扫视 281
19.2.1 简单的词法扫视程序 282
19.2.2 Lex的正则表达式 282
19.3 语法分析 283
19.4 创建解析树 288
19.5 连接后端与前端 289
第20章 寄存器传送语言 292
20.1 RTL insn 292
20.1.1 6种基本表达式代码 292
20.1.2 insn的类型和内容 294
20.2 模式和模式类 310
20.3 标志 312
第21章 机器相关的编译程序选项 314
21.1 机器列表 314
21.2 GCC命令行选项 315
21.2.1 Alpha选项 315
21.2.2 Alpha/VMS选项 320
21.2.3 ARC选项 320
21.2.4 ARM选项 320
21.2.5 AVR选项 325
21.2.6 CRIS选项 326
21.2.7 D30V选项 329
21.2.8 H8/300选项 330
21.2.9 HPPA选项 330
21.2.10 IA-64选项 332
21.2.11 Intel 386和AMD x86-64选项
334
21.2.12 Intel 960选项 339
21.2.13 M32R/D选项 340
21.2.14 M680x0选项 341
21.2.15 M68HClx选项 344
21.2.16 M88K选项 344
21.2.17 MCore选项 347
21.2.18 MIPS选项 348
21.2.19 MMIX选项 354
21.2.20 MN10200选项 355
21.2.21 MN10300选项 355
21.2.22 NS32K选项 356
21.2.23 PDP-11选项 358
21.2.24 RS/6000和PowerPC选项 359
21.2.25 RT选项 368
21.2.26 S/390和zSeries选项 369
21.2.27 SH选项 370
21.2.28 SPARC选项 372
21.2.29 System V选项 376
21.2.30 TMS320C3x/C4x选项 376
21.2.31 V850选项 379
21.2.32 VAX选项 380
21.2.33 Xstormy16选项 380
第4部分 附录
附录A GNU通用公共许可证 383
附录B 环境变量 389
附录C 命令行对照表 393
附录D 命令行选项 400
D.1 选项前缀 400
D.1.1 命令行的顺序 401
D.1.2 文件类型 401
D.2 选项字母顺序列表 402
附录E 术语表 480
猜您喜欢