gcc
- 格式:doc
- 大小:57.00 KB
- 文档页数:7
gcc命令的参数一、介绍GCC(GNU Compiler Collection)是一套广泛使用的编译器工具集,用于编译C、C++、Objective-C、Fortran等多种程序语言。
GCC命令的参数是指在使用GCC编译器时可以添加的选项和参数,通过这些参数可以对编译过程进行控制和定制,以满足不同的需求。
本文将详细介绍GCC命令的参数及其使用方法。
二、常用参数1. -o <file>指定输出文件的名称。
例如,gcc main.c -o main将编译main.c文件并输出可执行文件main。
2. -c只进行编译,不进行链接。
使用该参数可以将源代码编译为目标文件(.o文件),而不生成可执行文件。
3. -E只进行预处理,生成预处理后的代码。
该参数可用于查看预处理后的代码,以便调试和分析。
4. -g生成调试信息。
使用该参数可以在编译过程中生成调试信息,以便在调试程序时进行源代码级别的调试。
5. -Wall打开所有警告信息。
使用该参数可以让编译器输出所有可能的警告信息,帮助开发者发现潜在的问题。
6. -O优化选项。
GCC提供了多个优化选项,例如-O1、-O2、-O3等,可以根据需求选择不同级别的优化。
7. -I <dir>添加头文件搜索路径。
使用该参数可以告诉编译器在指定的目录中搜索头文件。
添加库文件搜索路径。
使用该参数可以告诉编译器在指定的目录中搜索库文件。
9. -l <library>链接指定的库文件。
使用该参数可以告诉编译器链接指定的库文件,例如-lm表示链接数学库。
10. -D <macro>定义宏。
使用该参数可以在编译过程中定义宏,以控制源代码中的条件编译。
三、高级参数1. -Werror将警告视为错误。
使用该参数可以将编译过程中的警告信息视为错误,编译过程将被中断。
2. -std=<standard>指定所使用的语言标准。
GCC支持多个语言标准,例如-std=c11表示使用C11标准。
gcc 用法GCC (GNU Compiler Collection) 是一套自由软件编译器,可以用于编译多种编程语言的源代码,包括 C、C++、Objective-C、Fortran、Ada 和其他一些语言。
GCC 是GNU计划的一部分,由自由软件基金会维护和发展。
本文将详细介绍 GCC 的使用方法。
一、环境准备在使用GCC之前,需要先安装好GCC。
GCC是开源软件,常见的Linux发行版都默认安装GCC,Windows下可以通过安装Cygwin或MinGW等方式安装GCC。
安装完成后,在命令行中输入gcc --version查看gcc的版本号确认是否安装成功。
除了GCC之外,还需要一个文本编辑器来编写源代码。
Windows下常用的文本编辑器有Notepad++,Linux下则使用vim或emacs等编辑器。
还需要了解一些基本的编程知识和语法。
二、GCC 编译 C 语言程序以下是一个简单的 C 语言程序,可以输出 "Hello, world!":```c#include <stdio.h>printf("Hello, world!\n");return 0;}```将上述代码保存为 helloworld.c 文件,然后在命令行中进入文件所在目录,输入以下命令编译该程序:```gcc helloworld.c -o helloworld```gcc是编译器的命令,helloworld.c是待编译的源代码文件名,-o helloworld是生成的可执行文件名。
执行上述命令后,GCC 会把源代码编译成可执行文件 helloworld。
运行该可执行文件,可以得到以下输出:```Hello, world!```三、GCC 编译 C++ 程序GCC 也可以编译 C++ 程序,以下是一个简单的 C++ 程序,可以输出 "Hello,world!":```c++#include <iostream>std::cout << "Hello, world!" << std::endl;return 0;}```将上述代码保存为 helloworld.cpp 文件,然后在命令行中进入文件所在目录,输入以下命令编译该程序:```g++ helloworld.cpp -o helloworld```g++是编译器的命令,helloworld.cpp是待编译的源代码文件名,-o helloworld是生成的可执行文件名。
gcc汽车认证法规-概述说明以及解释1.引言1.1 概述GCC汽车认证法规是指海湾合作委员会(GCC)国家间对汽车认证的一套标准和要求。
为了促进海湾地区汽车贸易和保障汽车安全,GCC成员国制定了一系列的法规和准则,对汽车的设计、生产、质量控制、安全与环保等方面进行规范和监管。
这些法规体现了GCC成员国对汽车行业的重视和对消费者权益的保护。
它们的制定旨在确保销往GCC市场的汽车符合高质量和安全标准,并促进汽车市场的竞争与发展。
通过对汽车认证的管理,GCC国家能够建立起一个公平、透明和可靠的汽车市场,为消费者提供更好的选择和服务。
尽管GCC国家的汽车认证法规在一些方面存在差异,但是它们都基于共同的原则和目标。
认证法规主要关注以下几个方面:汽车的安全性能、排放和环保要求、车辆的质量控制、产品标识和合规性检测等。
这些要求旨在确保汽车制造商遵守相关的技术标准和规范,在生产和销售过程中保证汽车的质量、安全和环保符合国际标准。
GCC汽车认证法规对于GCC成员国的汽车制造商和进口商来说是必须遵守的,它们需要通过相关的认证程序和检测,以确保其产品符合法规的要求。
只有通过认证的汽车才能销售和上市,否则将面临被禁止销售或受到处罚的风险。
通过GCC汽车认证法规的实施,GCC成员国能够建立起一个统一的汽车市场,加强对汽车质量和安全的监管控制,并提高消费者的购车信心和保障其权益。
随着海湾地区汽车市场的快速发展和竞争的加剧,GCC汽车认证法规也将不断更新和完善,以适应市场的需求和对汽车行业的要求。
1.2 文章结构文章结构部分的内容如下所示:文章结构本文按照以下结构进行组织。
首先,引言部分(第1节)将对GCC汽车认证法规进行概述,并介绍文章的整体结构。
其次,正文部分(第2节)将详细讨论GCC汽车认证法规的概述、要点一和要点二。
最后,结论部分(第3节)将总结GCC汽车认证法规,并展望其未来发展,并以结束语结束全文。
引言部分将以对GCC汽车认证法规的概述为开头,通过简要介绍该法规的背景和意义来引发读者的兴趣。
gcc使用方法
gcc是一款功能强大的编译器,常用于编译C和C++代码。
下面是gcc的使用方法。
1. 安装gcc
首先需要安装gcc,可以在终端输入以下命令进行安装:
sudo apt-get install gcc
2. 编写代码
使用任意文本编辑器编写C/C++代码,并保存为以".c"或".cpp" 结尾的文件。
例如,在终端中输入以下命令会打开nano文本编辑器,然后在其中输入C代码,并将文件保存为"hello.c":
nano hello.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
3. 编译代码
使用gcc编译代码,并生成可执行文件。
例如,在终端输入以下命令编译"hello.c"文件,并生成名为"hello"的可执行文件:
gcc -o hello hello.c
4. 运行可执行文件
在终端中输入以下命令来运行可执行文件:
./hello
输出结果为:
Hello World!
以上就是gcc的基本使用方法。
C语言编译器gcc命令如何操作步骤C语言是一种高级编程语言,由于其结构化编程,声明式语法,高效性和可靠性,被广泛用于很多领域。
gcc是一种C语言编译器,是Unix系统中最常用的编译器之一,它可以编译C、C++、JAVA等语言。
本文将为读者介绍对于gcc编译器的基本概念、相关命令以及实践操作步骤。
一、gcc基本概念1. 什么是编译器?先来了解一下编译器的作用。
编译器是将高级语言编写的程序转换成计算机可执行的机器语言的软件程序。
程序员可以使用高级语言编写程序,编译器将高级语言转换成计算机能够理解的机器语言。
2. 什么是gcc?GCC是GNU编译器集合(GNU Compiler Collection)的缩写。
它是一个重要的语言编译器,可以编译C、C++、JAVA等语言的程序。
gcc包含了一系列的编译器,每一个编译器都可以编译不同的语言,它不仅是Linux系统中的常用编译器,也被广泛使用于其他操作系统中。
3. gcc优点- 开源软件:可以透明、高效地利用计算机系统资源,让整个编译过程更灵活。
- 软件体积小:由于每次都是重新编译,因此gcc生成的二进制文件体积很小。
- 可移植性:gcc可以在不同的操作系统上进行编译。
同一份源代码,在不同的系统上编译,可以得到相同的结果。
- 动态链接库:gcc支持动态链接库,可以减少程序的代码冗余问题。
二、gcc常用命令以下是gcc编译器的常用命令:1. gcc -ogcc命令使用" -o"选项可以把源文件编译成可执行文件,例如:```$ gcc -o hello hello.c```上述命令的含义是将hello.c文件编译成hello可执行文件。
2. gcc -cgcc命令使用" -c"选项将源文件编译成目标文件。
目标文件是不可执行的文件,它包含了已经编译过的程序的一部分,这些程序可以用作最终的可执行文件中的一部分。
例如:```$ gcc -c hello.c```上述命令的含义是将hello.c文件编译成目标文件hello.o。
gcc-搜搜百科gcc摘要由GNU之⽗Stallman所开发的linux下的编译器,全称为GNU Compiler ,⽬前可以编译的语⾔包括:C, C++, , Fortran, Java, and , 可以在其官⽅页⾯找到更加详细的信息GCC是⼀个原本⽤于Unix-like系统下编程的编译器。
不过,现在GCC也有了许多下的移植版本。
这要感谢Internet上众多程序员的共同努⼒。
*Win32 下的 GCC 详细可察看词条:GCC for Win32⽬录123456⽬录12345678910GCC是GNU公社的⼀个项⽬。
是⼀个⽤于编程开发的⾃由编译器。
最初,GCC只是⼀个C语⾔编译器,他是GNU C Compiler 的英⽂缩写。
随着众多⾃由开发者的加⼊和GCC⾃⾝的发展,如今的GCC以经是⼀个包含众多语⾔的编译器了。
其中包括 C,C++,Ada,Object C和Java等。
所以,GCC也由原来的GNU C Compiler变为GNU Compiler Collection。
也就是 GNU编译器家族的意思。
当然,如今的GCC借助于他的特性,具有了交叉编译器的功能,即在⼀个平台下编译另⼀个平台的代码。
直到现在,GCC的历史仍然在继续,他的传奇仍然被⼈所传颂。
Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强⼤、性能优越的多平台编译器,是GNU的代表作品之⼀。
gcc是可以在多种硬体平台上编译出的超级编译器,其执⾏效率与⼀般的编译器相⽐平均效率要⾼20%~30%。
Gcc编译器能将C、源程序、汇程式化序和编译、连接成可执⾏⽂件,如果没有给出可执⾏⽂件的名字,gcc将⽣成⼀个名为a.out的⽂件。
在Linux系统中,可执⾏⽂件没有统⼀的后缀,系统从⽂件的属性来区分可执⾏⽂件和不可执⾏⽂件。
⽽gcc则通过后缀来区别输⼊⽂件的类别,下⾯我们来介绍gcc所遵循的部分约定规则。
.c为后缀的⽂件,C语⾔源代码⽂件;.a为后缀的⽂件,是由⽬标⽂件构成的档案库⽂件;.C,.cc或.cxx 为后缀的⽂件,是C++源代码⽂件;.h为后缀的⽂件,是程序所包含的;.i 为后缀的⽂件,是已经预处理过的C源代码⽂件;.ii为后缀的⽂件,是已经预处理过的C++源代码⽂件;.m为后缀的⽂件,是Objective-C源代码⽂件;.o为后缀的⽂件,是编译后的⽬标⽂件;.s为后缀的⽂件,是汇编语⾔源代码⽂件;.S为后缀的⽂件,是经过预编译的汇编语⾔源代码⽂件。
gcc认证标签要求
一、标签类型
GCC认证标签分为两种类型:金属标签和纸质标签。
金属标签应由不锈钢等耐腐蚀材料制成,纸质标签应由耐腐蚀的白色纸张印刷。
二、认证标准
GCC认证标签应符合以下标准:
1.标签应包含认证标志、认证编号、产品名称、生产商名称、生产日期和有效期等信息。
2.标签应清晰易读,字体大小适中,避免使用过于复杂的字体。
3.标签的颜色应与背景形成明显的对比,以便于识别。
4.标签的大小应适当,既能包含所需信息,又不会显得过于拥挤。
5.认证标志应清晰可见,易于识别,并符合GCC认证的有关规定。
三、生产商信息
标签应包含生产商的以下信息:
1.生产商名称。
2.生产商注册地址。
3.生产商联系电话和电子邮件地址。
4.生产商税务登记证号。
5.其他相关税务信息。
四、产品信息
标签应包含产品的以下信息:
1.产品名称。
2.产品型号。
3.产品的生产日期和有效期。
4.产品的数量和重量。
5.其他相关产品信息。
五、认证标志
标签应包含GCC认证标志,该标志应符合GCC认证的有关规定。
同时,标签还应包含认证编号,以便消费者进行查询。
六、其他信息
除以上规定的信息外,标签还可以包含以下信息:
1.产品的其他特点或优势。
2.产品的使用说明和注意事项。
3.其他相关附加信息。
gcc是什么意思
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU 开发的编程语言编译器。
GNU编译器套件包括C、C++、Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。
)
GCC的初衷是为GNU操作系统专门编写的一款编译器。
GNU系统是彻底的自由软件。
此处,“自由”的含义是它尊重用户的自由 [2] 。
GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。
GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。
GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等,并已被移植到其他多种硬件平台。
GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。
但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。
GCC(GNU Compiler Collection)是一套开源的编译器集合,广泛用于开发和编译C、C++、Objective-C、Fortran 等程序。
针对Linux 系统使用GCC,以下是一些基本的系统要求:
1. 操作系统版本:GCC 可以在多个版本的Linux 系统上运行。
具体的要求取决于你使用的GCC 版本和你的Linux 发行版。
在大多数常见的Linux 发行版上,都可以安装和使用GCC。
2. 系统架构:GCC 可以针对多种架构进行交叉编译,包括x86、x86_64、ARM、PowerPC 等。
你需要选择与目标架构相匹配的GCC 版本,并在相应的Linux 系统上进行安装和使用。
3. 系统资源:GCC 是一个相对较大的软件包,需要一定的系统资源来安装和使用。
具体的资源要求取决于你要编译的项目的大小和复杂性,以及你的编译选项和优化级别等。
4. 工具链:GCC 通常需要一些附加的工具和库来支持编译过程,如binutils(包括as、ld 等)、libc(如glibc)、头文件等。
确保你的Linux 系统上已经安装了相应的工具链组件。
具体的系统要求和安装步骤可能会因为Linux 发行版和GCC 版本而有所不同。
建议在安装GCC 之前,查阅你所使用的Linux 发行版和GCC 官方文档,了解相关的系统要求和安装指南,并根据实际情况进行安装和配置。
gcc认证介绍
GCC认证是指国家职业资格鉴定中心(General Certification of China)所颁发的一种认证资格。
GCC认证是为了提高企业员工的职业素质和技能水平而设立的一种国家级认证制度。
GCC认证分为多个不同的职业类别,包括计算机、电子商务、财务、人力资源、市场营销、工程设计等。
每个职业类别都有相应的认证标准和考试内容,考核内容主要包括理论知识、实践能力和综合素质等方面。
GCC认证具有以下几个特点:
1. 国家级认证:GCC认证是由国家职业资格鉴定中心颁发的,具有较高的权威性和可靠性,被广泛认可和接受。
2. 职业导向:GCC认证主要针对特定职业领域的人员进行,考核内容和标准与实际工作紧密相关,能够更好地评估和认定员工的专业能力。
3. 多层次认证:GCC认证分为初级、中级和高级等不同层次,可以根据个人的职业发展需求和实际能力选择适合的认证层次。
4. 持续学习:GCC认证要求持证人员在一定时间内进行继续教育和培训,不断提升自身的专业知识和技能水平,保持持续学习的态度。
GCC认证对个人和企业都具有重要意义。
对个人而言,获得GCC认证可以提升自身的职业竞争力和市场价值,增加求职的成功率和就业机会。
同时,认证过程也是对个人专业能力的一次全面检验和提升,有助于个人职业发展和晋升。
对企业而言,拥有GCC认证的员工具备较高的职业素质和技能水平,能够更好地适应企业的发展需求和工作要求。
企业可以通过招聘持有GCC认证的员工来提升组织整体实力和竞争力,同时也能够减少培训成本和时间,提高企业的效率和效益。
以上内容仅供参考,如需更多信息,建议查阅gcc认证官网或咨询相关行业专家。
GNU CC(简称为Gcc)是GNU 项目中符合ANSI C 标准的编译系统,能够编译用C、C++和Object C 等语言编写的程序。
Gcc 不仅功能强大,而且可以编译如C、C++、ObjectC、Java、Fortran、Pascal、Modula-3 和Ada 等多种语言,而且Gcc 又是一个交叉平台编译器,它能够在当前CPU 平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。
Gcc 所支持后缀名解释.c C 原始程序.s/.S 汇编语言原始程序.C/.cc/.cxx C++原始程序.h 预处理文件(头文件).m Objective-C 原始程序.o 目标文件.i 已经过预处理的 C 原始程序.a/.so 编译后的库文件.ii 已经过预处理的 C++原始程序Gcc 的编译流程分为了4 个步骤,分别为:• 预处理(Pre-Processing);• 编译(Compiling);• 汇编(Assembling);• 链接(Linking)。
下面就具体来查看一下Gcc 是如何完成 4 个步骤的。
首先,有以下hello.c 源代码:#include<stdio.h>int main(){printf("Hello! This is our embedded world!\n");return 0;}(1)预处理阶段在该阶段,编译器将上述代码中的stdio.h 编译进来,并且用户可以使用Gcc 的选项“-E”进行查看,该选项的作用是让Gcc 在预处理结束后停止编译过程。
注意,Gcc 指令的一般格式为:Gcc [选项] 要编译的文件[选项] [目标文件]其中,目标文件可缺省,Gcc 默认生成可执行的文件,命为:编译文件.out[root@localhost Gcc]# Gcc –E hello.c –o hello.i在此处,选项“-o”是指目标文件,“.i”文件为已经过预处理的C 原始程序。
以下列出了hello.i 文件的部分内容:由此可见,Gcc 确实进行了预处理,它把“stdio.h”的内容插入到hello.i 文件中。
(2)编译阶段接下来进行的是编译阶段,在这个阶段中,Gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
[root@localhost Gcc]# Gcc –S hello.i –o hello.s以下列出了hello.s 的内容,可见Gcc 已经将其转化为汇编了,感兴趣的可以分析一下这一行简单的C 语言小程序是如何用汇编代码实现的。
pushl %ebpmovl %esp, %ebpsubl $8, %espandl $-16, %espmovl $0, %eaxaddl $15, %eaxaddl $15, %eaxshrl $4, %eaxsall $4, %eaxsubl %eax, %espsubl $12, %esppushl $.LC0call putsaddl $16, %espmovl $0, %eaxleaveret.size main,.-main.ident "GCC: (GNU) 4.0.0 20050519 (Red Hat 4.0.0-8)".section .note.GNU-stack,"",@progbits(3)汇编阶段汇编阶段是把编译阶段生成的“.s”文件转成目标文件,在此可使用选项“- c”就可看到汇编代码已转化为“.o”的二进制目标代码了。
如下所示:[root@localhost Gcc]# Gcc –c hello.s –o hello.o(4)链接阶段在成功编译之后,就进入了链接阶段。
在这里涉及到一个重要的概念:函数库。
读者可以重新查看这个小程序,在这个程序中并没有定义“printf”的函数实现,且在预编译中包含进的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么是在哪里实现“printf”函数的呢?最后的答案是:系统把这些函数实现都被做到名为libc.so.6 的库文件中去了,在没有特别指定时,Gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。
函数库一般分为静态库和动态库两种。
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。
其后缀名一般为“.a” 。
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。
动态库一般后缀名为“.so”,如前面所述的libc.so.6 就是动态库。
Gcc 在编译时默认使用动态库。
完成了链接之后,Gcc 就可以生成可执行文件,如下所示。
[root@localhost Gcc]# Gcc hello.o –o hello运行该可执行文件,出现正确的结果如下。
[root@localhost Gcc]# ./helloHello! This is our embedded world!Gcc 编译选项分析Gcc 有超过100 个的可用选项,主要包括总体选项、告警和出错选项、优化选项和体系结构相关选项。
以下对每一类中最常用的选项进行讲解。
(1)总体选项Gcc 总体选项列表:-c 只是编译不链接,生成目标文件“.o”-S 只是编译不汇编,生成汇编代码-E 只进行预编译,不做其他处理-g 在可执行程序中包含标准调试信息-o file 把输出文件输出到file 里-v 打印出编译器内部编译各过程的命令行信息和编译器的版本-I dir 在头文件的搜索路径列表中添加dir 目录-L dir 在库文件的搜索路径列表中添加dir 目录-static 链接静态库-llibrary 连接名为library 的库文件对于“-c”、“-E”、“-o”、“-S”选项在前一小节中已经讲解了其使用方法,在此主要讲解另外两个非常常用的库依赖选项“-I dir”和“-L dir”。
• “-I dir”正如上所述, “-I dir”选项可以在头文件的搜索路径列表中添加dir 目录。
由于Linux中头文件都默认放到了“/usr/include/”目录下,因此,当用户希望添加放置在其他位置的头文件时,就可以通过“-I dir”选项来指定,这样,Gcc 就会到相应的位置查找对应的目录。
比如在“/root/workplace/Gcc”下有两个文件:这样,就可在Gcc 命令行中加入“-I”选项:[root@localhost Gcc] Gcc hello1.c –I /root/workplace/Gcc/ -o hello1这样,Gcc 就能够执行出正确结果。
小知识:在include 语句中, “<>”表示在标准路径中搜索头文件,“” “ ”表示在本目录中搜索。
故在上例中,可把hello1.c 的“#include < my.h >”改为“#include “my.h””,就不需要加上“-I”选项了。
• “-L dir”选项“-L dir”的功能与“-I dir”类似,能够在库文件的搜索路径列表中添加dir 目录。
例如有程序hello_sq.c 需要用到目录“/root/workplace/Gcc/lib”下的一个动态库libsunq.so,则只需键入如下命令即可:[root@localhost Gcc] Gcc hello_sq.c –L /root/workplace/Gcc/lib –lsunq –o hello_sq需要注意的是, “-I dir”和“-L dir”都只是指定了路径,而没有指定文件,因此不能在路径中包含文件名。
另外值得详细解释一下的是“-l”选项, 它指示Gcc 去连接库文件libsunq.so。
由于在Linux 下的库文件命名时有一个规定:必须以l、i、b 3 个字母开头。
因此在用-l 选项指定链接的库文件名时可以省去l、i、b 3 个字母。
也就是说Gcc 在对“-lsunq”进行处理时,会自动去链接名为libsunq.so 的文件。
(2)告警和出错选项Gcc 的告警和出错选项如下所示:-ansi 支持符合ANSI 标准的C 程序-pedantic 允许发出ANSI C 标准所列的全部警告信息-pedantic-error 允许发出ANSI C 标准所列的全部错误信息-w 闭所有告警-Wall 允许发出Gcc 提供的所有有用的报警信息-werror 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程下面结合实例对这几个告警和出错选项进行简单的讲解。
如有以下程序段:这是一个很糟糕的程序,读者可以考虑一下有哪些问题?•“-ansi”该选项强制Gcc 生成标准语法所要求的告警信息,尽管这还并不能保证所有没有警告的程序都是符合ANSI C 标准的。
运行结果如下所示:[root@localhost Gcc]# Gcc –ansi warning.c –o warningwarning.c: 在函数“main”中:warning.c:7 警告:在无返回值的函数中,“return”带返回值warning.c:4 警告:“main”的返回类型不是“int”可以看出,该选项并没有发现“long long”这个无效数据类型的错误。
• “-pedantic”允许发出ANSI C 标准所列的全部警告信息,同样也保证所有没有警告的程序都是符合ANSI C 标准的。
其运行结果如下所示:[root@localhost Gcc]# Gcc –pedantic warning.c –o warningwarning.c: 在函数“main”中:warning.c:5 警告:ISO C90 不支持“long long”warning.c:7 警告:在无返回值的函数中,“return”带返回值warning.c:4 警告:“main”的返回类型不是“int”可以看出,使用该选项查看出了“long long”这个无效数据类型的错误。
•“-Wall”允许发出Gcc 能够提供的所有有用的报警信息。
该选项的运行结果如下所示:[root@localhost Gcc]# Gcc –Wall warning.c –o warningwarning.c:4 警告:“main”的返回类型不是“int”warning.c: 在函数“main”中:warning.c:7 警告:在无返回值的函数中,“return”带返回值warning.c:5 警告:未使用的变量“tmp”使用“-Wall”选项找出了未使用的变量tmp,但它并没有找出无效数据类型的错误。