没有合适的资源?快使用搜索试试~ 我知道了~
首页深入了解:GCC 6.1.0编程手册
"《Linux编程与GCC手册》是GNU Compiler Collection (GCC) 的官方文档,针对GCC版本6.1.0,由Richard Stallman和GCC开发者社区共同编撰。该手册由GNUPress出版,隶属于Free Software Foundation。此版本是在2003年10月为GCC 3.3.1发行,印刷版售价为45美元。 该手册涵盖了GCC的核心概念、安装指南、语言特性、编译选项以及调试技巧等内容,是深入理解和使用GCC进行C/C++程序开发的权威参考。它不仅适合那些初次接触GCC的程序员,也对经验丰富的开发者在优化代码和利用GCC高级功能方面提供了详尽的指导。 通过阅读此手册,读者可以了解到如何设置编译器环境,编写源代码,理解预处理器指令,掌握不同目标平台上的编译规则,以及如何处理错误和警告。此外,手册还包含了对内联汇编、链接器选项、模板编程等高级特性和技术的介绍。 版权方面,根据GNU Free Documentation License Version 1.3或其后续版本,用户被赋予复制、分发和修改此文档的权利,条件是必须保留版权信息和自由软件基金会的声明。手册封面的版权文字表明了读者对这份文档拥有自由使用的权利,可以像使用GNU软件一样,自由地复制和修改。 对于那些希望在Linux环境下提升编程技能,或者正在探索GCC作为高效、开源编译器的开发者来说,《Linux编程与GCC手册》是一份必不可少的参考资料。通过深入学习和实践,读者将能够更好地利用GCC工具链,提高代码质量和开发效率。"
资源详情
资源推荐
Chapter 1: Programming Languages Supported by GCC 3
1 Programming Languages Supported by GCC
GCC stands for “GNU Compiler Collection”. GCC is an integrated distribution of compil-
ers for several major programming languages. These languages currently include C, C++,
Objective-C, Objective-C++, Java, Fortran, Ada, and Go.
The abbreviation GCC has multiple meanings in common use. The current official mean-
ing is “GNU Compiler Collection”, which refers generically to the complete suite of tools.
The name historically stood for “GNU C Compiler”, and this usage is still common when
the emphasis is on compiling C programs. Finally, the name is also used when speaking
of the language-independent component of GCC: code shared among the compilers for all
supported languages.
The language-independent component of GCC includes the majority of the optimizers,
as well as the “back ends” that generate machine code for various processors.
The part of a compiler that is specific to a particular language is called the “front end”.
In addition to the front ends that are integrated components of GCC, there are several
other front ends that are maintained separately. These support languages such as Pascal,
Mercury, and COBOL. To use these, they must be built together with GCC proper.
Most of the compilers for languages other than C have their own names. The C++ compiler
is G++, the Ada compiler is GNAT, and so on. When we talk about compiling one of those
languages, we might refer to that compiler by its own name, or as GCC. Either is correct.
Historically, compilers for many languages, including C++ and Fortran, have been im-
plemented as “preprocessors” which emit another high level language such as C. None of
the compilers included in GCC are implemented this way; they all generate machine code
directly. This sort of preprocessor should not be confused with the C preprocessor, which
is an integral feature of the C, C++, Objective-C and Objective-C++ languages.
Chapter 2: Language Standards Supported by GCC 5
2 Language Standards Supported by GCC
For each language compiled by GCC for which there is a standard, GCC attempts to follow
one or more versions of that standard, possibly with some exceptions, and possibly with
some extensions.
2.1 C Language
The original ANSI C standard (X3.159-1989) was ratified in 1989 and published in 1990.
This standard was ratified as an ISO standard (ISO/IEC 9899:1990) later in 1990. There
were no technical differences between these publications, although the sections of the ANSI
standard were renumbered and became clauses in the ISO standard. The ANSI standard,
but not the ISO standard, also came with a Rationale document. This standard, in both
its forms, is commonly known as C89, or occasionally as C90, from the dates of ratifi-
cation. To select this standard in GCC, use one of the options ‘-ansi’, ‘-std=c90’ or
‘-std=iso9899:1990’; to obtain all the diagnostics required by the standard, you should
also specify ‘-pedantic’ (or ‘-pedantic-errors’ if you want them to be errors rather than
warnings). See Section 3.4 [Options Controlling C Dialect], page 33.
Errors in the 1990 ISO C standard were corrected in two Technical Corrigenda published
in 1994 and 1996. GCC does not support the uncorrected version.
An amendment to the 1990 standard was published in 1995. This amendment added
digraphs and __STDC_VERSION__ to the language, but otherwise concerned the library. This
amendment is commonly known as AMD1; the amended standard is sometimes known as
C94 or C95. To select this standard in GCC, use the option ‘-std=iso9899:199409’ (with,
as for other standard versions, ‘-pedantic’ to receive all required diagnostics).
A new edition of the ISO C standard was published in 1999 as ISO/IEC 9899:1999, and
is commonly known as C99. (While in development, drafts of this standard version were
referred to as C9X.) GCC has substantially complete support for this standard version; see
http://gcc.gnu.org/c99status.html for details. To select this standard, use ‘-std=c99’
or ‘-std=iso9899:1999’.
Errors in the 1999 ISO C standard were corrected in three Technical Corrigenda published
in 2001, 2004 and 2007. GCC does not support the uncorrected version.
A fourth version of the C standard, known as C11, was published in 2011 as ISO/IEC
9899:2011. (While in development, drafts of this standard version were referred to as C1X.)
GCC has substantially complete support for this standard, enabled with ‘-std=c11’ or
‘-std=iso9899:2011’.
By default, GCC provides some extensions to the C language that, on rare occasions con-
flict with the C standard. See Chapter 6 [Extensions to the C Language Family], page 383.
Some features that are part of the C99 standard are accepted as extensions in C90 mode,
and some features that are part of the C11 standard are accepted as extensions in C90 and
C99 modes. Use of the ‘-std’ options listed above disables these extensions where they
conflict with the C standard version selected. You may also select an extended version of
the C language explicitly with ‘-std=gnu90’ (for C90 with GNU extensions), ‘-std=gnu99’
(for C99 with GNU extensions) or ‘-std=gnu11’ (for C11 with GNU extensions).
The default, if no C language dialect options are given, is ‘-std=gnu11’.
6 Using the GNU Compiler Collection (GCC)
The ISO C standard defines (in clause 4) two classes of conforming implementation. A
conforming hosted implementation supports the whole standard including all the library
facilities; a conforming freestanding implementation is only required to provide certain
library facilities: those in <float.h>, <limits.h>, <stdarg.h>, and <stddef.h>; since
AMD1, also those in <iso646.h>; since C99, also those in <stdbool.h> and <stdint.h>;
and since C11, also those in <stdalign.h> and <stdnoreturn.h>. In addition, complex
types, added in C99, are not required for freestanding implementations.
The standard also defines two environments for programs, a freestanding environment,
required of all implementations and which may not have library facilities beyond those
required of freestanding implementations, where the handling of program startup and ter-
mination are implementation-defined; and a hosted environment, which is not required,
in which all the library facilities are provided and startup is through a function int main
(void) or int main (int, char *[]). An OS kernel is an example of a program running
in a freestanding environment; a program using the facilities of an operating system is an
example of a program running in a hosted environment.
GCC aims towards being usable as a conforming freestanding implementation, or as the
compiler for a conforming hosted implementation. By default, it acts as the compiler for a
hosted implementation, defining __STDC_HOSTED__ as 1 and presuming that when the names
of ISO C functions are used, they have the semantics defined in the standard. To make it act
as a conforming freestanding implementation for a freestanding environment, use the option
‘-ffreestanding’; it then defines __STDC_HOSTED__ to 0 and does not make assumptions
about the meanings of function names from the standard library, with exceptions noted
below. To build an OS kernel, you may well still need to make your own arrangements for
linking and startup. See Section 3.4 [Options Controlling C Dialect], page 33.
GCC does not provide the library facilities required only of hosted implementations, nor
yet all the facilities required by C99 of freestanding implementations on all platforms. To
use the facilities of a hosted environment, you need to find them elsewhere (for example, in
the GNU C library). See Section 12.5 [Standard Libraries], page 736.
Most of the compiler support routines used by GCC are present in ‘libgcc’, but there
are a few exceptions. GCC requires the freestanding environment provide memcpy, memmove,
memset and memcmp. Finally, if __builtin_trap is used, and the target does not implement
the trap pattern, then GCC emits a call to abort.
For references to Technical Corrigenda, Rationale documents and information concerning
the history of C that is available online, see http://gcc.gnu.org/readings.html
2.2 C++ Language
GCC supports the original ISO C++ standard published in 1998, and the 2011 and 2014
revisions.
The original ISO C++ standard was published as the ISO standard (ISO/IEC 14882:1998)
and amended by a Technical Corrigenda published in 2003 (ISO/IEC 14882:2003). These
standards are referred to as C++98 and C++03, respectively. GCC implements the majority
of C++98 (export is a notable exception) and most of the changes in C++03. To select
this standard in GCC, use one of the options ‘-ansi’, ‘-std=c++98’, or ‘-std=c++03’; to
obtain all the diagnostics required by the standard, you should also specify ‘-pedantic’ (or
‘-pedantic-errors’ if you want them to be errors rather than warnings).
剩余849页未读,继续阅读
laodaliubei
- 粉丝: 5
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端面试必问:真实项目经验大揭秘
- 永磁同步电机二阶自抗扰神经网络控制技术与实践
- 基于HAL库的LoRa通讯与SHT30温湿度测量项目
- avaWeb-mast推荐系统开发实战指南
- 慧鱼SolidWorks零件模型库:设计与创新的强大工具
- MATLAB实现稀疏傅里叶变换(SFFT)代码及测试
- ChatGPT联网模式亮相,体验智能压缩技术.zip
- 掌握进程保护的HOOK API技术
- 基于.Net的日用品网站开发:设计、实现与分析
- MyBatis-Spring 1.3.2版本下载指南
- 开源全能媒体播放器:小戴媒体播放器2 5.1-3
- 华为eNSP参考文档:DHCP与VRP操作指南
- SpringMyBatis实现疫苗接种预约系统
- VHDL实现倒车雷达系统源码免费提供
- 掌握软件测评师考试要点:历年真题解析
- 轻松下载微信视频号内容的新工具介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功