GCC编译选项简单介绍

本文介绍了GCC编译器的一系列选项,包括-Wall显示所有警告,-Werror将警告视为错误,以及-Wshadow、-Wunused等特定警告选项。此外,还涉及编译优化(-O3)、动态链接库(-shared,-fPIC)和调试信息(-g)的生成。这些选项帮助开发者提高代码质量和可维护性。
摘要由CSDN通过智能技术生成
WFLAGS = -Wall -Wshadow -Wunused-value -Wextra -Waddress -Wno-implicit-fallthrough -Werror=return-type

一、简介

1,-w

  • 关闭编译时的警告信息

2, -W,-Wall

  • 显示编译时的所有警告信息

3, -g

  • 可执行程序包含调试信息,可用于GDB调试

4, -o

  • 指定编译结果文件名

5, -c

  • 只编译不链接,不产生可执行文件

6, -O3

  • 开启优化选项,等级三

7, -shared

  • 用于创建动态链接库

8, -fPIC

  • (1) 用于编译阶段,告诉编译器产生与位置无关代码(Position Independent Code);
  • (2) 产生的代码中没有绝对地址,全部使用相对地址,所以代码可以被加载器加载到内存的任意位置,都可以正确执行;
  • (3) 这正是动态链接库所要求的,动态链接库被加载时,在内存的位置不是固定的;

9,-I(大写的i)

  • 指定查找文件路径

10, -L

  • 指定链接库查找路径

11,-l(小写的L)

  • 指定链接库

12,-Wunused

  • 一个变量声明后没有使用,编译时报警告

13,-Wimplicit

  • 使用了没有声明的函数,编译时报警告

14,-Wreturn-type

  • 检查函数返回值类型,对于返回值类型错误、或者声明了返回值定义缺失的函数,编译时报警告

15, -Wshadow

  • 在一个变量(大作用域)的作用域范围内在定义一个同名变量(小作用域),导致使用变量时,对象不够明确,编译时报警告
  • 示例
// 示例
int main(const int argc, const char *argv[]) {
	int i = 20;
	if (argc > 2) {
		int i = 10;
		--i;
	}
	return 0;
}

16, -Werror

  • 所有的警告升级为错误

17,-Werror=

  • 指定的警告信息升级为错误的警告信息
  • 示例
CFLAGS += -Werror=return-type
将函数返回值类型不匹配,从警告升级到报错

18,-Wuninitialized

  • 使用未初始化的变量报警告

二、参考文档

参考文档:
(1)[Invoking GCC (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Invoking-GCC.html)
(2)[Option Summary (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Option-Summary.html)
(3)[Warning Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值