【ARM 嵌入式 编译系列 2.4 -- GCC 编译参数学习 -Wl,--gc-sections 】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】


文章目录

概述

下面是 GCC 编译器选项和链接器选项的一部分,每个选项都有特定的作用。下面是每个选项的详细说明:

-Wl 选项

-Wl 是一个 GCC 编译器选项,用于将后面的选项传递给链接器。当你使用 GCC 编译并链接你的程序时,你可能需要传递特定的选项给链接器。-Wl 后面跟着一个逗号分隔的列表,其中包含了要传递给链接器的选项。

例子:
sh 复制代码
-Wl,--gc-sections 

--gc-sections --gc-sections

是一个链接器选项,它告诉链接器移除未被使用的代码和数据节(sections)。这是一个优化选项,可以减少最终生成的二进制文件的大小。当这个选项和编译器的 -ffunction-sections-fdata-sections 选项一起使用时,每个函数和数据项都会被放置在单独的节中,使得链接器能够删除未使用的部分。

例子:
sh 复制代码
-Wl,--gc-sections 

-Wshadow

这是一个编译器警告选项,它会在一个局部变量"遮蔽"了(即拥有相同名称)另一个作用域中的变量时生成警告。

例子:
sh 复制代码
-Wshadow 

-Wlogical-op

这是一个编译器警告选项,它会在检测到可疑的逻辑操作时生成警告,比如使用逻辑 &&|| 时可能会产生非预期的结果。

例子:
sh 复制代码
-Wlogical-op 

-Waggregate-return

这是一个编译器警告选项,它会在函数返回聚合类型(如结构体)时生成警告。这可能会导致潜在的效率问题,因为聚合类型通常比简单类型大,复制它们需要更多的时间。

例子:
sh 复制代码
-Waggregate-return 

-Wfloat-equal

这是一个编译器警告选项,它会在检测到浮点数直接比较是否相等时生成警告。因为浮点运算有精度问题,直接比较两个浮点数是否相等通常不是一个好方法。

例子:
sh 复制代码
-Wfloat-equal 

-Wconversion

这是一个编译器警告选项,它会在数据类型转换可能改变值时生成警告,比如将一个较大的整型转换成较小的整型可能会丢失数据。

例子:
sh 复制代码
-Wconversion 

-Wpointer-arith

这是一个编译器警告选项,它会在指针运算中潜在的问题出现时生成警告,比如对非数组指针进行下标访问。

例子:
sh 复制代码
-Wpointer-arith 

这些选项大多用于精细控制编译和链接过程,以及提高代码质量。你可以根据项目的需要选择性地使用这些选项以达到预期的效果。

  1. -gdwarf-4 这是一个编译器选项,用于生成调试信息。-gdwarf-4 指定使用 DWARF Version 4 格式的调试信息。DWARF 是一种调试文件格式,用于描述程序的数据结构,以便调试器能够理解程序的运行状态。版本 4 是该格式的一个版本,提供了特定的功能和优化。

  2. -xlinker 这是一个 GCC 选项,用于将后面的参数传递给链接器。每次使用 -xlinker 时,紧随其后的一个选项或参数就会被传递给链接器。

相关推荐
通信小呆呆5 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick5 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee5 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn865 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e5 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨5 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq5 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan5 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend5 天前
理论学习:什么是 Coding Agent?
学习
自传.5 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding