【ARM 嵌入式 编译系列 2.2 -- 如何在Makefile 中添加编译时间 | 编译作者| 编译 git id】

请阅读【ARM GCC 编译专栏导读】

上篇文章:【ARM 嵌入式 编译系列 2.1 -- GCC 编译参数学习】
下篇文章:【ARM 嵌入式 编译系列 2.3 -- GCC 中指定 ARMv8-M 的 Thumb 指令集参数详细介绍】

文章目录

编译参数介绍

通常我们在 OS 启动的时候我们可以在串口log中看到 当前使用的镜像的编译时间、是谁编译的,当前镜像是基于哪个 git commit编译的?我们如何在编译过程中添加这些参数呢?

通过下面命令获取当前时间:

powershell 复制代码
$ date +"%Y-%m-%d-%H-%M-%S"
2022-12-20-10-29-31

通过下面命令获取当前用户:

shell 复制代码
$ whoami
CodingCos

通过下面命令获取当前 git id

powershell 复制代码
$ git log -1 --pretty=format:'%H'

9c7085ed92eeeac5836f540511c65e5190975d46

我们只需要将上面获取到的值在 Makefile 中赋值给相应的变量, 然后使用 export将其从Makefile导出到由Makefile启动的子进程的环境中即可,如下:

powershell 复制代码
COMPILE_TIME_DATE := $(shell date +"%Y-%m-%d-%H-%M-%S")
COMPILE_USER_NAME := $(shell whoami)
COMPILE_COMMIT_ID := $(shell git log -1 --pretty=format:'%H')

export COMPILE_TIME_DATE
export COMPILE_USER_NAME
export COMPILE_COMMIT_ID

关于 Makefile 中 export 的使用

在编的时候将上面定义的参数以宏的形式进行定义, 如下:

powershell 复制代码
 PARCFLAGS += -DCOMPILE_TIME_DATE=$(COMPILE_TIME_DATE) -DCOMPILE_USER_NAME=$(COMPILE_USER_NAME) -DCOMPILE_COMMIT_ID=$(COMPILE_COMMIT_ID) \

在编译的时候使用 参数 OBJCFLAGS 即可,如下:

kotlin 复制代码
ifeq ($(CROSS_COMPILE), )
        CROSS_COMPILE = arm-none-eabi-
endif
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld
GDB = $(CROSS_COMPILE)gdb
OBJDUMP = $(CROSS_COMPILE)objdump
OBJCOPY = $(CROSS_COMPILE)objcopy
READELF = $(CROSS_COMPILE)readelf

all:

%.o: %.c
        @echo -e "\t c " CC $(CFLAGS) $< -o $@
        @$(CC) $(PARCFLAGS) $< -o $@

%.o: %.S
        @echo -e "\t s " CC $(OBJCFLAGS) $< -o $@
        @$(CC) $(OBJCFLAGS) $< -o $@

上篇文章:【ARM 嵌入式 编译系列 2.1 -- GCC 编译参数学习】
下篇文章:【ARM 嵌入式 编译系列 2.3 -- GCC 中指定 ARMv8-M 的 Thumb 指令集参数详细介绍】

相关推荐
振南的单片机世界2 小时前
PVD掉电中断——让单片机“咽气前”写完遗书
arm开发·stm32·单片机·嵌入式硬件
en.en..2 小时前
计算机字节序(大小端)核心原理与代码实战
arm开发
zlinear数据采集卡6 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
Geek-Chow11 小时前
Git 标签与发布流程:轻量标签、附注标签与签名标签
git·tags
wear工程师11 小时前
Git 冲突怎么解决:别只删标记,先看懂暂存区的 1、2、3 阶段
git
村雨遥11 小时前
覆盖提交不等于删除,这才是彻底清除 Git 历史的正确姿势
git·github
淮北49412 小时前
ubuntu22 默认输入法调整频率
运维·服务器·git·ubuntu·elasticsearch
momo_aa12 小时前
小白下载git步骤
git
dunge202613 小时前
2026 ChatGPT Plus / Pro + Codex 实战:从 0 搭一套 AI 编程项目模板,AGENTS.md + Git + 测试一次配好
人工智能·git·chatgpt
2401_827501281 天前
【无标题】
arm开发·嵌入式硬件