Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

KEIL MDK 多啟動文件編譯選擇機制詳解

編輯:Linux 教學

現象描述

專案中同時存在 startup_stm32f10x_ld.s、startup_stm32f10x_md.s、startup_stm32f10x_hd.s 多個啟動文件,按理說會導致重複定義編譯錯誤,但實際編譯卻通過。原因在於 KEIL 通過「Include in Target Build」屬性控制哪個文件參與編譯。

圖標識別

項目樹中,被勾選編譯的文件圖標無紅點,未勾選的文件圖標帶有三個紅點(表示排除)。

多個啟動文件

專案中多啟動文件共存狀態

配置步驟

  1. 右鍵點擊目標啟動文件(如 startup_stm32f10x_hd.s)→ Options for File 'xxx.s'。
  2. 在彈出的對話框中勾選 Include in Target Build。
  3. 其餘啟動文件確保未勾選該選項。
Include in Target Build

文件屬性配置對話框

原理解析

  • KEIL 編譯器僅處理標記為「Include in Target Build」的源文件。
  • 未勾選文件僅作為備選參考,不參與編譯鏈接,避免符號重複定義。
  • 此機制允許同一專案根據 Target 不同(如 Debug/Release、不同芯片型號)快速切換啟動文件,無需物理刪除/添加文件。

最佳實踐建議

  1. 根據實際芯片 Flash 容量,只勾選對應容量等級的啟動文件(ld/md/hd)。
  2. 若使用 STM32CubeMX 生成代碼,會自動根據芯片型號選擇正確啟動文件並設置該屬性。
  3. 避免手動修改啟動文件內容;如需調整堆疊/堆大小,建議在 CubeMX 中配置或直接編輯對應 .s 文件的 Stack_Size/Heap_Size 宏。
Copyright © Windows教程網 All Rights Reserved