首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

單片機 C 語言編譯錯誤「Target has no object modules」原因與解決

     編輯:C 語言問答

Keil / IAR 常見構建錯誤排查

錯誤信息:

Build target '...'
Target has no object modules
目標未創建

核心原因

項目中**沒有任何源文件參與編譯**,導致鏈接器找不到目標模塊(.o/.obj 文件),無法生成最終映像。

四大典型場景與解決

場景現象解決步驟
1. 未選擇芯片型號Options → Device 未勾選具體 MCU勾選正確型號(如 STC89C52RC、STM32F103C8T6),自動配置啟動文件、鏈接腳本
2. 源文件未加入項目Project 窗口無 .c/.asm 文件,或文件圖標灰色右鍵 Source Group → Add Existing Files,選中所有 .c/.s 文件
3. 文件被排除編譯文件屬性勾選「Exclude from build」右鍵文件 → Options → 取消勾選 Exclude
4. 只有頭文件無實現項目僅含 .h,缺 .c 實現文件補全 .c 文件,或從庫文件添加預編譯 .lib/.a

快速自查清單

  1. 菜單 Project → Options for Target → Device 是否選對芯片?
  2. Project 面板 Source Group 1 下是否有 .c 文件?
  3. 文件圖標是否正常(非灰色、非紅叉)?
  4. Output 窗口編譯階段是否出現 compiling xxx.c... 信息?
  5. 是否誤將 main() 寫在頭文件或註釋掉?

進階提示

  • Keil MDK 中,Startup File(啟動文件) 也屬於源文件一部分,若刪除或未勾選 Options → Target → Use MicroLIB 導致缺入口,也會報類似錯誤。
  • 多工程工作區時,確認當前 Active Target 正確。
  • 清理構建:Project → Clean 後重新 Build,排除殘舊中間文件干擾。

遇到「Target has no object modules」,**90% 是源文件未加入項目或芯片未選**,按上表逐項排查即可秒解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved