列举gcc 常见和有用的编译警告选项

简介: 列举gcc 常见和有用的编译警告选项

编译警告选项

-Wall: 开启所有常见的编译警告。

-Wextra: 启用额外的警告,不包括在-Wall中。

-Wpedantic: 检查ISO C和ISO C++标准的严格遵守。

-Wunused: 检查未使用的变量、函数和标签。

-Wuninitialized: 检查未初始化的变量。

-Wshadow: 检查局部变量遮蔽全局变量的情况。

-Wpointer-arith: 检查无效的指针运算。

-Wcast-qual: 检查类型转换时丢失const或volatile限定符的情况。

-Wstrict-prototypes: 要求函数原型的严格声明。

-Wmissing-prototypes: 检查未声明的函数原型。

-Wmissing-declarations: 检查未声明的全局变量。

-Wredundant-decls: 检查重复的声明。

-Wnested-externs: 检查嵌套的外部声明。

-Winline: 报告无法内联的函数。

-Wconversion: 检查可能导致类型转换问题的代码。

-Wfloat-equal: 检查浮点数值的直接比较。

-Wunsafe-loop-optimizations: 检查循环优化的安全性。

-Wstrict-aliasing: 检查严格的别名规则。

-Wstrict-overflow: 检查溢出优化可能导致的问题。

-Wformat: 检查printf和scanf系列函数的格式字符串。

-Wformat-security: 检查格式字符串是否存在安全漏洞

-Wformat-y2k: 检查年份是否符合Y2K问题的解决方案。

-Wnonnull: 检查是否将非空指针传递给要求非空参数的函数。

要查看完整的警告选项列表,请参阅GCC文档中的选项部分:https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

GCC具有许多命令行选项,可以用于调整编译器的行为。以下是一些常用的GCC参数:

-o : 指定输出文件的名称。例如:

gcc myfile.c -o myfile

-c: 只编译源代码,不进行链接。产生一个目标文件(.o文件)。例如:

gcc -c myfile.c

-S: 将源代码编译成汇编代码,不进行链接。例如:

gcc -S myfile.c

-E: 只进行预处理,不进行编译和链接。例如:

gcc -E myfile.c

-I: 添加包含文件的搜索路径。例如:

gcc -Iinclude myfile.c -o myfile

-L: 添加库文件的搜索路径。例如:

gcc myfile.c -Llib -o myfile

-l: 链接指定的库。例如:

gcc myfile.c -lm -o myfile

这里-lm告诉GCC链接数学库(libm)。

-g: 在可执行文件中包含调试信息。例如:

gcc -g myfile.c -o myfile

-O: 指定优化级别。级别可以是0、1、2、3,其中0表示不进行优化,3表示最高优化级别。例如:

gcc -O2 myfile.c -o myfile

-std=: 指定要使用的C或C++语言标准。例如:

c

gcc -std=c99 myfile.c -o myfile

-f: 指定特定的编译器选项。例如:

gcc -fno-strict-aliasing myfile.c -o myfile

这里-fno-strict-aliasing禁用了严格的别名检查。

-W: 指定警告选项,前面已经讲解过。

-D: 定义一个宏。例如:

gcc -DDEBUG myfile.c -o myfile

-U: 取消宏定义。例如:

gcc -UDEBUG myfile.c -o myfile

-shared: 生成共享库。例如:

gcc -shared -o libmylib.so myfile.c

-fpic / -fPIC: 生成位置无关代码(Position Independent Code),通常用于创建共享库。例如:

gcc -fPIC -c myfile.c


目录
相关文章
|
3月前
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
1月前
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
62 11
|
3月前
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
36 4
|
3月前
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
89 0
|
6月前
|
编译器 Linux 开发工具
|
6月前
|
NoSQL 编译器 开发工具
006.gcc编译器
gcc是什么?
87 0
006.gcc编译器
|
6月前
|
存储 NoSQL 算法
从一个crash问题展开,探索gcc编译优化细节
问题分析的过程也正是技术成长之路,本文以一个gcc编译优化引发的crash为切入点,逐步展开对编译器优化细节的探索之路,在分析过程中打开了新世界的大门……
|
5月前
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
|
5月前
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
161 0
|
5月前
|
C语言
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令