【ARM 嵌入式 編譯系列 2.2 -- 如何在Makefile 中添加編譯時間 | 編譯作者| 編譯 git id】


請閱讀【ARM GCC 編譯專欄導讀】

上篇文章:【ARM 嵌入式 編譯系列 2.1 – GCC 編譯參數學習】
下篇文章:【ARM 嵌入式 編譯系列 2.3 – GCC 中指定 ARMv8-M 的 Thumb 指令集參數詳細介紹】

文章目錄

    • 編譯參數介紹

編譯參數介紹

通常我們在 OS 啟動的時候我們可以在串口log中看到 當前使用的鏡像的編譯時間、是誰編譯的,當前鏡像是基于哪個 git commit編譯的?我們如何在編譯過程中添加這些參數呢?

通過下面命令獲取當前時間:

$ date +"%Y-%m-%d-%H-%M-%S"
2022-12-20-10-29-31

通過下面命令獲取當前用戶:

$ whoami
CodingCos

通過下面命令獲取當前 git id

$ git log -1 --pretty=format:'%H'9c7085ed92eeeac5836f540511c65e5190975d46

我們只需要將上面獲取到的值在 Makefile 中賦值給相應的變量, 然后使用 export將其從Makefile導出到由Makefile啟動的子進程的環境中即可,如下:

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 的使用

在編的時候將上面定義的參數以宏的形式進行定義, 如下:

 PARCFLAGS += -DCOMPILE_TIME_DATE=$(COMPILE_TIME_DATE) -DCOMPILE_USER_NAME=$(COMPILE_USER_NAME) -DCOMPILE_COMMIT_ID=$(COMPILE_COMMIT_ID) \

在編譯的時候使用 參數 OBJCFLAGS 即可,如下:

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)readelfall:%.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 指令集參數詳細介紹】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163006.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163006.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163006.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

福州大學《嵌入式系統綜合設計》實驗五:圖像裁剪及尺寸變換

一、實驗目的 在深度學習中&#xff0c;往往需要從一張大圖中裁剪出一張張小圖&#xff0c;以便適應網絡輸入圖像的尺寸&#xff0c;這可以通過bmcv_image_crop函數實現。 實踐中&#xff0c;經常需要對輸入圖像的尺寸進行調整&#xff0c;以適用于網絡輸入圖片尺寸&#xff0…

查看sql語句執行計劃并重建索引

晚上cpu報警顯示當前cpu使用率達到90%以上&#xff0c;不到10%的空閑 先查詢當前sql&#xff1a; #&#xff08;ORACLE&#xff09; SQL > set line 200 pages 1000 col event for a30 col program for a30 col username for a12 col sql_id for a15 col INST_ID for 9999 …

前端開發學習 (二) 事件修飾符、系統命令

其實&#xff0c;我們上一章的時候就已經說過了一些系統指令&#xff0c;這里詳細介紹一下 一、v-on的事件修飾符 事件作用click點擊時觸發submit表單被提交時觸發input輸入框發生改變時觸發keyup按鍵松開時觸發keydown按鍵按下時觸發mouseover鼠標懸停觸發mouseout當鼠標移開…

安徽省廣德市選擇云軸科技ZStack Cloud云平臺建設縣級智慧城市

信創是數字中國建設的重要組成部分&#xff0c;也是數字經濟發展的關鍵推動力量。作為云基礎軟件企業&#xff0c;云軸科技ZStack產品矩陣全面覆蓋數據中心云基礎設施&#xff0c;ZStack信創云首批通過可信云《一云多芯IaaS平臺能力要求》先進級&#xff0c;是其中唯一兼容四種…

錯誤記錄:AttributeError/TypeError

【pycharm】報錯&#xff1a;AttributeError: partially initialized module ‘numpy’ has no attribute ‘array’ (most likely due to a circular import)的錯誤 文件名與調用包的名稱一致引起歧義 解決辦法&#xff1a;修改文件名重新run 【pycharm】報錯&#xff1a;T…

【Web】NewStarCTF Week1 個人復現

目錄 ①泄露的秘密 ②Begin of Upload ③Begin of HTTP ④ErrorFlask ⑤Begin of PHP ⑥R!C!E! ⑦EasyLogin ①泄露的秘密 盲猜/robots.txt,訪問得到flag前半部分 第二個沒試出來&#xff0c;老老實實拿dirsearch掃吧 訪問/www.zip 下載附件&#xff0c;拿到第二部分…

SpringCloud原理-OpenFeign篇(一、Hello OpenFeign項目示例)

文章目錄 前言正文一、項目結構二、服務調用鏈路說明三、Rpc調用鏈路說明四、項目代碼4.1 client 模塊中的feign接口4.2 client 中的rest接口4.3 client 中的啟動類4.4 server中的rest接口4.5 server中的配置文件 五、調試 附錄附1&#xff1a;本系列文章鏈接 前言 本篇是Spri…

示波器探頭講解及案例分享

示波器探頭講解 示波器探頭 分為X1、X10檔&#xff1a; X1檔&#xff0c;表示被測量的信號沒有經過衰減進入示波器 X10檔&#xff0c;表示被測量的信號衰減10倍進入示波器&#xff08;當示波器也設置為10X檔&#xff0c;直接讀數即可&#xff0c;但是當示波器設置為1X檔&…

vue 目錄樹的展開與關閉

目錄 1、翻頁方法中控制目錄樹節點的展開與關閉2、搜索目錄樹節點名稱控制節點的展開與關閉 <el-tree:data"data_option"ref"tree":props"defaultProps"node-click"handleNodeClick":default-expanded-keys"needExpandedKeys&…

1、開發工具介紹及軟件安裝

軟件安裝 百度網盤鏈接&#xff1a;https://pan.baidu.com/s/1J7sgXntt9eLNBhI1Dc6MsQ?pwd2023 提取碼&#xff1a;2023 # 一 Keil5安裝步驟&#xff1a; 激活&#xff1a; STC-ISP安裝步驟&#xff1a; STC-ISP.exe安裝即用 安裝CH340_CH341驅動程序 所有學習課程和資源…

【vue】ant-design-vue的樹結構實現節點增刪改查

根據業務需要&#xff0c;實現樹結構的節點新增編輯刪除功能&#xff0c;主要邏輯是利用樹節點的scopedSlots屬性對其進行自定義改造&#xff0c;監聽懸停事件在節點右側出現增刪改對應圖標&#xff0c;點擊圖標出現彈窗表單對內容進行修改&#xff0c;具體代碼如下&#xff1a…

藍橋杯每日一題2023.11.23

題目描述 題目分析 本題使用遞歸模擬即可&#xff0c;將每一個大格子都可以拆分看成幾個小格子&#xff0c;先將最開始的數字進行填入&#xff0c;使每一個對應小格子的值都為大格子對應的數&#xff0c;搜索找到符合要求的即可 &#xff08;答案&#xff1a;50 33 30 41&am…

Vue3+ts學習筆記2

<script setup lang"ts"> import {onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted} from vueonBeforeMount(()>{console.log(---掛載之前---) })onMounted(()>{console.log(---掛載---) })onBeforeUpdate(()>{consol…

Python爬取京東商品銷售數據進行數據分析示例代碼,以口紅為例

文章目錄 一、準備工作驅動安裝模塊使用與介紹 二、流程解析三、完整代碼四、效果展示關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Python學習書籍四、Python工具包項目源碼合集①Python工具包②Python實戰案例③Python小游戲源碼五、面試資…

git代碼提交命令(如何提交代碼)

# 提交暫存區到倉庫區 $ git commit -m [message]# 提交暫存區的指定文件到倉庫區 $ git commit [file1] [file2] ... -m [message]# 提交工作區自上次commit之后的變化&#xff0c;直接到倉庫區 $ git commit -a# 提交時顯示所有diff信息 $ git commit -v# 使用一次新的commit…

2023年中國釩鐵產量及行業進出口現狀分析[圖]

釩鐵&#xff0c;銀白色塊狀&#xff0c;一般分為桶裝或噸袋包裝&#xff0c;根據釩含量的不同分為50釩鐵&#xff08;FeV50&#xff09;和80釩鐵&#xff08;FeV80&#xff09;,通過爐外法或電爐法冶煉生產&#xff0c;北方多以爐外法制取&#xff0c;南方多為電爐法生產。 釩…

Chrome瀏覽器將從2024年6月開始限制廣告攔截器

雖然一年前&#xff0c;谷歌公司已經暫停推出新的“Manifest V3”擴插件展格式&#xff0c;原因是這種新格式會對 Chrome 中一些最受歡迎的擴展插件造成嚴重損害&#xff1b;一年后今天&#xff0c;Google 正在重新啟動該計劃&#xff0c;逐步淘汰 Chrome 擴展程序當前的 Manif…

Faster R-CNN源碼解析(一)

目錄 前言訓練腳本(train_mobilenetv2.py)自定義數據集(my_dataset.py) 前言 Faster R-CNN 是經典的two-stage目標檢測模型&#xff0c; 原理上并不是很復雜&#xff0c;也就是RPNFast R-CNN&#xff0c;但是在代碼的實現上確實有很多細節&#xff0c;并且源碼也非常的多&…

chatglm3部署使用

chatglm3部署使用 1.部署2.使用3.接入微信4.vue前端 1.部署 1.首先去github下載chatglm3代碼。Huggingface下載模型一直失敗&#xff0c;所以用阿里的魔塔社區下載。 git clone https://github.com/THUDM/ChatGLM3.git git clone https://www.modelscope.cn/ZhipuAI/chatglm3…

docker常見問題匯總

docker常見問題 ?問題1&#xff1a;啟動docker容器時&#xff0c;報錯Unknown runtime specified nvidia. 當我啟動一個容器時&#xff0c;運行以下命令&#xff1a; docker run --runtimenvidia 。。。。 后面一部分命令沒寫出來&#xff0c;此時報錯的信息如下&#xff1a;…