硬汉嵌入式论坛

 找回密码
 立即注册
查看: 474|回复: 4
收起左侧

[MDK] MDK AC6 -OZ编译报错 R_ARM_THM_PC8

[复制链接]

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
发表于 2025-6-16 17:00:31 | 显示全部楼层 |阅读模式
报错报文为:
Error: L6286E: Relocation #REL:2 in export.o(.text._export_func_execute) with respect to __arm_cp.5_2. Value(0xffffffe1) out of range(0 - 0xff) for (R_ARM_THM_PC8)
Snipaste_2025-06-16_16-54-35.png

问了AI,AI的回答如下:
Snipaste_2025-06-16_16-56-39.png


目前不清楚什么原因,从网络上搜索资料貌似是由于__attribute__((section(".ARM.__at_0x08008600")))这行代码引起的。
注释掉之后编译成功

根据网上说法(https://community.arm.com/support-forums/f/keil-forum/54780/help-with-linker-error),在链接选项中增加
--no_merge_litpools



这样子也可以编译,固件比原先增加500个字节
Snipaste_2025-06-16_16-59-55.png


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-6-17 09:19:38 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2025-6-17 12:05:15 | 显示全部楼层
这玩意是个玄学,一直都没搞明白什么会这样,经常把优化等级改成另外一个就可以正常编译,比如从原来的O0改到O1,或者从O1改到O0
回复

使用道具 举报

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
 楼主| 发表于 2025-6-17 21:54:09 | 显示全部楼层
benny 发表于 2025-6-17 12:05
这玩意是个玄学,一直都没搞明白什么会这样,经常把优化等级改成另外一个就可以正常编译,比如从原来的O0改 ...

AI说的是有道理的。。
的确是由attribute把某个变量写到固定位置引起的。。但是不清楚更深层次的原因。

用--no_merge_litpools也可以让它正常编译。
回复

使用道具 举报

11

主题

60

回帖

93

积分

初级会员

积分
93
发表于 2025-6-18 21:58:57 | 显示全部楼层
本帖最后由 njsssmq 于 2025-6-18 22:04 编辑

曾经困扰我很久,不胜其烦。经常要修改编译等级才能通过。当时工程中用了emWin6.30。后来将emWin升级后,该问题消失.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:35 , Processed in 0.073871 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表