书籍详情

GCC技术参考大全

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
猜您喜欢

读书导航