列举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


目录
相关文章
|
7天前
|
编译器 Linux 开发工具
|
7天前
|
C语言
gcc的简易用法(编译、参数与链接)
【5月更文挑战第14天】gcc的简易用法(编译、参数与链接)。
9 1
|
7天前
|
Unix Java 编译器
安装gcc
【5月更文挑战第14天】安装gcc。
21 1
|
7天前
|
C语言
gcc的简易用法
【5月更文挑战第10天】gcc的简易用法。
17 8
|
7天前
|
NoSQL 编译器 开发工具
006.gcc编译器
gcc是什么?
50 0
006.gcc编译器
|
7天前
|
存储 NoSQL 算法
从一个crash问题展开,探索gcc编译优化细节
问题分析的过程也正是技术成长之路,本文以一个gcc编译优化引发的crash为切入点,逐步展开对编译器优化细节的探索之路,在分析过程中打开了新世界的大门……
453 1
|
7天前
|
C语言
转载 - gcc/ld 动态连接库和静态连接库使用方法
本文介绍了如何在GCC中实现部分程序静态链接、部分动态链接。使用`-Wl`标志传递链接器参数,`-Bstatic`强制链接静态库,`-Bdynamic`强制链接动态库。
42 0
|
7天前
|
编译器 C语言
gcc编译警告:warning: suggest parentheses around assignment used as truth value
gcc编译警告:warning: suggest parentheses around assignment used as truth value
32 0
|
7天前
|
编译器 Linux C语言
gcc编译器的使用方法
gcc编译器的使用方法
29 1
|
7天前
|
编译器 C语言
gcc/g++语法
gcc/g++语法