GCC

本专栏共有6 篇文章

GCC命令详解与实践(六) -- 预处理器选项

我们知道,预处理是在C源文件编译之前进行的,预处理器选项是用来控制编译器执行代码预处理的选项。 在预编译器选项中,我们只使用-E选项进行预处理,当只使用-E选项时,编译器除了预处理之外什么也不做。 而有一些预处理选项需要与-E一起使用才有意义,否则它们会导致预处理输出的结果不适合实际编译。 以下是一些常用的预处理选项。 gcc -D 用法:gcc -D <name> <filename> 作用: 预定义一个宏,且该宏的值为1。 例如: gcc -D NUM foo.c 以上的举例gcc -D NUM

GCC命令详解与实践(五) -- 代码优化选项

代码优化选项,顾名思义就是用来优化代码的编译选项。 在没有任何优化的情况下,编译器的目标是降低编译成本,并输出预期的结果。 打开优化选项后,编译器会以牺牲编译时间和调试程序的能力为代价来改进性能和/或代码大小。 代码优化的选项有很多种,但我们通常通过设置代码优化等级来告诉编译器该如何优化代码。主要分为以下四个等级。 gcc -O0 用法:gcc -O0 作用:默认配置,不优化。 例如: gcc -O0 foo.c gcc -O1 或 gcc -O 用法:gcc -O1 作用:

GCC命令详解与实践(四) -- 告警选项

告警是指代码本身没有错误,但有风险,或有潜在错误。GCC编译器可以通过告警选项请求或禁止打印告警信息。通常在调试过程中,打印必要的告警信息,这对于程序员排查代码错误,提高软件质量非常有帮助。 在本章中,我们依然以之前文章提到的foo.c文件为例进行讲解。 gcc -fmax-errors 用法:gcc -fmax-errors=n 作用:将代码中的错误提示数量限制为n,当错误数量达到n时,此时GCC会退出,而不是试图继续处理 源代码。默认情况下n=0,即不限制错误提示数量。如果还指定了-wfatal-error,则-wfatal-error优先于此选项。 例如: gcc -fmax-errors=3 foo.

GCC命令详解与实践(三) -- C语言控制选项

在开始这一章之前,我们先了解两个概念: C的派生语言和C的子集。 C的派生语言指的是从C语言衍生出来的编程语言, 如C++, Objective-C和Objective-C++。 C的子集指的是K&R C,ANSI C(即C89),C90(即ISO C),C99,C11。其中除了标准文档在印刷编排上的某些细节不同外,ISO C(C90) 和 ANSI C(C89) 在技术上完全一样。 具体可以参考我的这篇文章《C语言介绍》 本章所讲的编译选项的作用就是控制编译器根据指定的C派生语言或者子集进行编译。 下面介绍几种常用的C派生语言选项。 gcc -ansi

GCC命令详解与实践(二) -- 全局选项

为方便描述,以下以文件foo.c为例。在foo.c中,我们简单写一个两数求和的代码。然后存放到自己指定的文件夹下,最后在foo.c的文件夹下进入命令行环境。 前期准备 编写代码; foo.c代码如下: #include <stdio.h> int main(void) { int num1 = 0; int num2 = 0; int sum = 0; printf("请输入数字1:

GCC命令详解与实践(一) -- 概述

GCC编译器的功能 这一章,我们来学习gcc编译器的命令。很多讲makefile的资料因为对gcc命令操作介绍较少,对小白学习makefile非常不友好,所以,在这里我想重点介绍一下gcc的常用命令。 在开始学习之前,我们再来回顾一下makefile的规则,Makefile的规则如下: targets: prerequisites <commands> target 也就是一个目标文件,可以是 Object File,也可以是执行文件。还可以是一个标签( Label),对于标签这种特性,在后续的“ 伪目标” 章节中会有叙述。 prerequisites 就是,要生成那个target 所需要的文件或是目标。 command 也就是