Makefile 在 ARM MCU 开发中的编译与链接参数详解与实践
内容大纲
-
引言
-
一、预处理与宏定义
-
头文件搜索路径:
-I
-
宏定义:
-D
-
-
二、编译器选项(CFLAGS)
-
架构与指令集:
-mcpu
、-mthumb
-
优化与调试:
-Os
、-O2
、-g
-
警告与错误:
-Wall
、-Werror
-
代码剥离:
-ffunction-sections
、-fdata-sections
-
其他常用选项
-
-
三、链接器选项(LDFLAGS)
-
链接脚本:
-T
-
剔除未用代码:
--gc-sections
-
生成映射文件:
-Wl,-Map=
-
库路径与库:
-L
、-l
-
半主机与裸机:
--specs=nosys.specs
-
-
四、完整 Makefile 示例
-
五、实践案例:STM32F103 “点亮 LED”
-
硬件说明
-
代码结构
-
Makefile 配置
-
编译与下载流程图
-
-
六、图例说明
-
七、示例解析
-
八、调试与优化建议
-
九、小结
引言
在嵌入式开发中,Makefile 作为每个项目的“发动机”,承担了源码编译、链接、打包的重任。对 ARM Cortex-M 系列 MCU(如 STM32、BlueNRG、BluePill 等)来说,合理配置编译器与链接器参数,不仅能缩小固件体积、提升运行效率,也能在调试阶段提供必要的符号信息。本文将以最常用的 arm-none-eabi-gcc
为例,系统梳理预处理、编译器(CFLAGS)和链接器(LDFLAGS)常见选项,并通过 STM32 点亮 LED 的实践案例,加深理解。
一、预处理与宏定义
1.1 头文件搜索路径:-I<路径>
-
作用:告诉编译器在指定目录中查找
#include "xxx.h"
的头文件。 -
用法: