【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”

简介: 【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”

找不到main.o及解决方法

有时候当我们拿来别人的keil工程在自己的电脑上打开时会发生这样的错误,程序中已经有main函数,且确认没有写错,启动文件中也没有修改main标识,但是编译报错,并且程序中只有一个错误,就是找不到main.o标志,此时可能是别人的keil工程所包含的keil路径和自己的电脑上keil路径不同造成的,因为直接点击Project工程会默认按照上次打开时的配置进行打开(keil工程中有专门的文件记录工程中的配置等信息),可以尝试使用下面的解决方法

1. 首先找到keil的安装位置,依次打开下面的文件夹

Keil_v5\ARM\ARMCC\lib

然后点击路径,并复制该路径

2. 打开keil的魔法棒options for Target,选择Linker选项卡,把复制好的路径黏贴到Misc controls框中,替换掉原来的路径

3. 重新编译一下,检查是否能够通过编译

这个问题在打开别人创建的keil工程的时候会经常出现,因为每个人安装keil的路径可能并不相同,所以当学习会修改别人的工程时,如果遇到找不到main这种编译报错,就可以尝试通过这个方法解决。如果在使用keil打开别人的工程,遇到一些莫名其妙的问题,一定要去看看各种带有路径的设置,查看路径是否正确,很多莫名其妙的错误都是路径不同引起的。

STM32F429xx宏的作用

在我们学习STM32开发的时候,在搭建开发环境时,需要对MDK进行各种配置,一般需要在MDK的optiions for Target(魔术棒)中C/C++选项卡的Define框中加入一些宏,比如STM32F429xx等,为什么要加这些宏呢?

当我们使用STM32系列芯片进行开发时,一般都要包含一个顶层头文件stm32f4xx.h,而顶层头文件会根据具体工程芯片的型号来选择包含对应的芯片的片上外设访问层头文件,比如我们使用stm32f429系列芯片的时候会包含stm32f429.h文件,在stm32f4xx.h中可以找到这样的语句

1. ···
2. #elif defined(STM32F429xx)
3. #iinclude "stm32f429xx.h"
4. ···

这里就是根据宏定义STM32F429xx来选择包含哪个片上外设访问层头文件。如果不在MDK的optiions for Target(魔术棒)中C/C++选项卡的Define框中加STM32F429xx这个宏,会报出很多错误,显示有各种未定义,注意在我们使用到stm32f429xx.h这个头文件中的定义时会报错,如果我们没有使用到这个文件中的内容可能不会报错,但是这并不代表工程没有问题,所以在开发时,还是要加上这个宏为好。


相关文章
|
数据可视化 中间件 API
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
熟悉 在 STM32 CubeMX 下面的 FreeRTOS 使用
6441 1
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
|
6月前
|
中间件 项目管理 芯片
Keil MDK(uVision5)完全指导手册(个人总结,篇幅有限)
本指南系统讲解Keil MDK5开发全流程:涵盖环境搭建、首个STM32项目(LED闪烁)、工程配置、断点调试与内存监视、编译优化、中间件集成(USB/文件系统)及常见问题排错,助力嵌入式开发者高效入门与进阶。(239字)
3096 2
|
10月前
|
IDE 编译器 开发工具
嵌入式开发必备!Keil uVision5 C51 V9.61 安装激活 + 汉化完整教程, 含(Keil MDK 5.39)
Keil C51 V9.61是一款专用于8051系列单片机的集成开发环境,支持主流厂商芯片,集编辑、编译、仿真于一体,基于μVision5平台,操作便捷。提供C编译器、汇编器、调试器等全套工具,适用于嵌入式开发。附带安装与激活教程,可实现汉化界面,提升使用体验。(237字)
14359 10
|
固态存储 IDE 开发工具
手把手教你安装Keil MDK5:官方网盘资源+芯片支持包配置详解(附调试实战)
Keil是一款专为嵌入式系统开发设计的集成开发环境(IDE),由德国Keil Software公司开发,后被ARM收购整合为MDK-ARM工具链的一部分。本文详细介绍Keil MDK541的安装步骤、系统要求、运行环境配置及首次使用指南,包括许可证管理、芯片支持包安装和工程模板设置等。同时提供新建STM32工程、编写测试代码的具体操作,并解答常见问题,如缺少DLL文件、语言设置及编译错误处理。附延伸学习资源与版权声明,帮助用户高效上手Keil开发环境。
9872 24
|
8月前
|
编译器 开发工具 C语言
【2026最新】VSCode下载、安装和使用保姆级教程(附安装包+图文步骤)
Visual Studio Code(VSCode)是微软开发的免费开源跨平台代码编辑器,轻量高效,支持50多种编程语言。通过丰富插件可扩展功能,兼具简洁与强大,广泛应用于Web开发、数据科学等领域,是全球开发者首选工具之一。
17634 7
|
传感器 网络协议 物联网
STM32+ESP8266+MQTT协议连接阿里云物联网平台
STM32+ESP8266+MQTT协议连接阿里云物联网平台
16451 4
STM32+ESP8266+MQTT协议连接阿里云物联网平台
|
传感器 数据采集 安全
基于STM32与ESP8266的智能家居控制系统【免费开源】
通过本项目的开发,不仅加深了对 STM32 外设编程的理解,还掌握了物联网系统的整体设计思路。从传感器数据采集,到通信协议实现,再到云端与APP交互,完整地体验了智能家居系统的开发流程。这为后续更复杂的 IoT 项目打下了坚实基础。
基于STM32与ESP8266的智能家居控制系统【免费开源】
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
2590 10
|
物联网 API 数据库
一文带你认识蓝牙 GATT 协议
正所谓磨刀不误砍柴工,我们有必要先深入的学习一下 GATT 以及 GATT 相关的一些知识。 本文我们就来了解一下 蓝牙 GATT 到底是什么?同时了解下我们使用的 ESP32-C3 GATT示例的工程的代码结构。
10163 5
一文带你认识蓝牙 GATT 协议
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
4770 7