Keil C51从汇编跳转到main函数编译器报错ERROR L127: UNRESOLVED EXTERNAL SYMBOL的解决办法

2023-10-29

  • 51单片机系列教程主仓库地址:https://gitee.com/langcai1943/8051-from-boot-to-application

  • 遇到的问题1:

  • 如果你自建的汇编原文件不是以Keil默认的.A51或者.s .S结尾,而是以.asm .ASM结尾的话,在Keil工程里包含新文件时,不要使用文件类型:All files(.),而要使用文件类型:Asm Source file(*.s; *.src; .a),否则Keil编译会报错,无法创建中间文件的路径。

  • 遇到的问题2:

  • 不使用Keil的默认文件,如何自己写Boot汇编文件并跳转到Main函数?自己写的代码编译时会报错

  • Keil C51从汇编跳转到main函数编译器报错ERROR L127: UNRESOLVED EXTERNAL SYMBOL的解决办法

  • 报错信息如下:

; Keil工程里面就新建2个文件,而且不使用Keil的默认Boot汇编文件,并自动跳转到main函数的功能
; STARTUP.A51:
EXTERN CODE (_MAIN)

	ORG 00H
	LJMP _MAIN
	RETI

;	ORG 0100H
;RESET:
;	NOP 
;	RET

	END

// main.c
int main()
{
	return 0;
}
  • 发现有编译报错:
Rebuild started: Project: aaa
Rebuild target 'Target 1'
assembling STARTUP.A51...
compiling main.c...
linking...
*** WARNING L30: MEMORY SPACE OVERLAP
    SEG:     ?CO?STARTUP?0
    FROM:    C:000000H   
    TO:      C:000003H   
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _MAIN
    MODULE:  .\Objects\STARTUP.obj (STARTUP)
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  _MAIN
    MODULE:  .\Objects\STARTUP.obj (STARTUP)
    ADDRESS: 1000001H
Program Size: data=9.0 xdata=0 const=0 code=23
Target not created.
Build Time Elapsed:  00:00:01
  • 解决办法:
  • 这是因为你不能像Keil默认工程那样使用int main()这种定义,这里面有返回值,必须要用void main(int param)才行,即使使用void main()也不行,也会报错;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keil C51从汇编跳转到main函数编译器报错ERROR L127: UNRESOLVED EXTERNAL SYMBOL的解决办法 的相关文章

  • 简述RecyclerView的fling过程

    我们以RecyclerView为例 研究一下ListView是怎么滑动并且更新view的 首先可以肯定的是以Choreographer为基础实现的 一 fling过程研究 fling动作是由input事件触发的 1 1 RecyclerVi
  • 如何用Idea调试Maven插件

    调试端 maven插件源码端 被调试端 maven项目端 使用maven插件构建 和调试普通程序一样 只是调试命令有区别 过程原理如下 注 原理图片摘自https www cnblogs com turn2i p 11823884 html
  • vue实现一个展开和关闭的动画效果

    前言 用 vue animation 来实现一个展开与关闭的效果 效果图 组件逻辑 1 核心是通过改动他的宽度来实现展开 收缩的效果 2 点击展开 分两步 先用动画显示一个展开的效果 再用定时器来让他的效果保存在最后一帧 3 点击收缩 逻辑
  • 泽众TestOne自动化测试平台,挡板测试(Mock测试)上线了!!

    什么是挡板测试 Mock测试 主要应对与某些不容易构造或者不容易获取的对象以及暂时没有开发完成的对象 设计一个虚拟的对象 配置测试需求的业务数据 完成测试业务 TestOne是泽众软件自主研发的一体化测试系统 基于B S 体系结构 集自动化

随机推荐

  • Redis详解(二)——Redis基本操作

    今天继续给大家介绍Redis的相关知识 本文主要内容是Redis的基本操作 本文旨在为大家介绍Redis的基本操作 属于Redis入门级的介绍 如果想要进一步了解Redis的使用操作 推荐以下网站 https www runoob com
  • 魔改 vue-quill-editor字体及字号

  • Android Studio在vivo手机上调试apk出现解析包出错

    在Android studio开发过程中出现解析包时出现问题 用的是vivo y73 Android 8 1的手机 今年刚新出的手机 在开发的时候一直用着是6 0的系统 突然用到8 1的系统进行适配 发现各种报错 还有一个是手机处理器也是一
  • Android中Acition和Category常量表

    Action Action常量 对应字符串 简单说明 ACTION MAIN android intent action MAIN 应用程序入口 ACTION VIEW android intent action VIEW 显示指定数据 A
  • 基础算法:高精度加法

    高精度加法 代码模拟加法过程 1 lt 整数长度 lt 10 5 长整数的加法 int类型的最大值大概 2 1e9 10位长度 include
  • 【Anaconda】安装软件包时Solving environment卡住很长时间

    多数情况下的原因 安装该库需要考虑各软件包的兼容性 可能导致的无法安装的情况 可能解决方法 方法一 创建一个新的 python 环境 只安装代码中需要的库 conda create n name python version conda a
  • Matlab:筛选满足指定条件的数组元素

    Matlab 筛选满足指定条件的数组元素 在Matlab中 我们可以使用一些函数来筛选满足特定条件的数组元素 这些函数包括 find logical 和 indexing 等 下面以一个简单的实例来说明如何查找符合条件的数组元素 假设有一个
  • 判断应用或Activity是否存在

    一 判断应用是否存在 方法一 通过usb连接的方式 使用adb命令查看已安装的文件列表 adb shell pm list package 然后通过查看列表里是否含有对应的应用名来判断是否安装某应用 列表如下 adb shell pm li
  • Qt 数据类型转换 QString转Quint16

    如使用了QString存储用户输入的数据 数据类型 指的是quint16 qint16 float quint32 qint32等 可供用户自己选择的 而最终要使用的数据类型是quin16 下面是各种类型的转换 一 QString strV
  • Apache commons exec框架的简介说明

    转自 Apache commons exec框架的简介说明 下文笔者讲述Apache commons exec框架的简介说明 如下所示 Apache commmons exec框架的功能 Apache commons exec框架是对 Pr
  • Linux进程间通信——使用匿名管道

    本文介绍另一种进程间通信的方式 匿名管道 通过它进程间可以交换更多有用的数据 一 什么是管道 如果你使用过Linux的命令 那么对于管道这个名词你一定不会感觉到陌生 因为我们通常通过符号 来使用管道 但是管理的真正定义是什么呢 管道是一个进
  • SVG生成页面水印

    svg生成页面水印 灰信网 软件开发博客聚合
  • ElasticSearch基本操作

    文章目录 1 ElasticSearch 简介 2 索引库操作 2 1 mapping 属性 2 2 索引库CRUD 3 文档操作 3 1 新增文档 3 2查询文档 3 3删除文档 3 4修改文档 4 RestClient 4 1准备工作
  • C/C++静态变量static详解

    静态变量作用范围在一个文件内 程序开始时分配空间 结束时释放空间 默认初始化为0 使用时可以改变其值 静态变量或静态函数只有本文件内的代码才能访问它 它的名字在其它文件中不可见 用法1 函数内部声明的static变量 可作为对象间的一种通信
  • 数据挖掘 NO.1 数据挖掘入门

    1 机器学习 代价函数 m是样本数量 直到最后得到的值收敛或者样本使用完 1 定义代价函数 2 对每个参数求偏导数 3 使用梯度下降算法更新 数据集先开始进行划分 解决OVERFITTING 1 在测试集评估模型 2 Regelizatio
  • Hibernate之多对多级联查询、新增、删除

    以书籍与书籍类别为例 一本书可以有多种类型 一种类型也可以对应多本书 书籍和书籍类别的关系是多对多的关系 他们的关系是在中间表里面的 多对多通过一个表找到另一个表的数据的条件为 中间表 中间表对应本表的外键 中间表对应关联表的外键 注 多对
  • 使用picgo配置图床使用

    图床这种东西 做博客是必须要的 这里我记录目前我使用的几种图床 方便以后使用 以后有新的好用的 也会相应的更新 sm ms图床 免费的sm sm ms图床 好用 速度还可以 下面图片是sm图 可以感受一下速度 csdn图床 csdn这个社区
  • 【裸机开发】I2C 通信接口(二)—— I2C 寄存器解析

    目录 一 硬件原理图分析 二 IO 复用寄存器解析 三 I2C 寄存器解析 3 1 时钟配置 3 2 I2C1 IADR 设置从机地址 3 3 I2C1 IFDR 设置分频值 3 4 I2C1 I2CR I2C使能 中断控制 3 5 I2C
  • ArcPy批量计算栅格数据平均值

    遥感数据处理系列 一些项目及科研中遇到的小需求 一方面记录自己的学习历程 另一方面帮助大家学习 本系列文章的开发环境为 ArcGIS 10 2 2 Python 2 7 ENVI 5 3 IDL 8 5 ArcPy批量计算栅格数据平均值 G
  • Keil C51从汇编跳转到main函数编译器报错ERROR L127: UNRESOLVED EXTERNAL SYMBOL的解决办法

    51单片机系列教程主仓库地址 https gitee com langcai1943 8051 from boot to application 遇到的问题1 如果你自建的汇编原文件不是以Keil默认的 A51或者 s S结尾 而是以 as