绝对好使(反正我好使了)Error: L6411E: No compatible library exists with a definition of startup symbol __main.

项目场景:

ARM KEIL

问题描述:

.\Objects\jiangjie.axf: Warning: L6665W: Neither Lib Request armlib Lib Request cpplib defined, not searching ARM libraries.
.\Objects\jiangjie.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.

Error: L6411E: No compatible library exists with a definition of startup symbol __main

以及*** error 65: access violation at 0x00000000 : no ‘execute/read’ permission的解决

我遇到这个问题是在初学ARM时候(现在)刚刚安装完ARM KEIL之后想要运行一个独立的汇编.s文件,就非常简单的代码然后经过各种更改Linker什么的剩余的最后一个问题,关于这个报错其他博主写了更改什么环境变量之类的我试过都不好使。
我有两个解决办法,反正这样做是达到了我想要的目的,看到debug环境下的寄存器内的变化。

首先,我的Linker设置是这样的

解决方案:

在这个位置不要选择’是’(没错,这一手什么问题都没有了)

在上图选择’是’之后,只写一个.s文件不写其他文件会报错(反正我是这样)
是如下的错误:
.\Objects\jiangjie.axf: Warning: L6665W: Neither Lib Request armlib Lib Request cpplib defined, not searching ARM libraries.
.\Objects\jiangjie.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.

在此需要添加一个.c文件里面只需要写一个main入口就可以
以我的水平就是:
#include <stdio.h>
int main(){
}
就这个代码
添加到你的工程文件目录后就不会报错了

在这里又遇到一个问题…

*** error 65: access violation at 0x00000000 : no ‘execute/read’ permission

进入debug环境会发现你的R0位置始终指向(0x00000000)
我是在这里直接改掉了pc:

然后再单步执行就能看到想要的了(反正是我想要的。。。)
注:因为我的代码是这样的

所以我就把pc改为R0的地址了

更新:后面这里,不用手动改pc,更改debug下的memorymap range值,我这个代码写0x00000000, 0x00008000后直接运行一下然后再单步执行就可以了,图如下:

最后:(现在刚开始学,希望能帮助某些同为新手的人吧,第一次写博客,实在看不下去那些水帖霸着问题榜,我就想吐槽一下,不解决问题在帖子里摆一堆基础知识磨磨唧唧的那些东西随便一本教科书都写着的用你写博客?不写理解不写操作写书本知识的人你们发帖子是为了什么呢?)

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值