[STM32L4] 生成.stldr 文件时出现问题cannot find the specified linker script

[复制链接]
166|14
HomeKit 发表于 2026-2-15 21:37 | 显示全部楼层 |阅读模式
我在 STM32Cube IDE 中生成.stldr 文件。但在编译生成.stldr 文件时,我遇到了cannot find the specified linker script。从截图中可以看到有人了解这个问题吗?
我也试了以下命令,但依旧无法解决问题:cmd.exe/C copy/Y “${BuildArtifactFileBaseName}.elf” “..\STM32L4P5_MX25L12833F.stldr”
863466991cb524c6d1.png 964606991cb766d36e.png 624596991cb9edc5a6.png

公羊子丹 发表于 2026-2-16 11:11 | 显示全部楼层
我看你控制台里是cp命令报的路径错,压根不是链接脚本的问题,估计是上层目录根本没有,你先检查下工程上级文件夹里有没有STM32L4P5_MX25L12833F相关的目录,手动建一个再编译试试。
周半梅 发表于 2026-2-16 11:12 | 显示全部楼层
兄弟你这makefile里的拷贝路径有问题吧,..\是上级目录,你确定工程的上一级文件夹能直接写文件吗?是不是权限不够,或者路径里的空格、下划线输错了,先把目标路径改成工程内的文件夹试试。
帛灿灿 发表于 2026-2-16 11:12 | 显示全部楼层
这问题我做外部loader时遇过,CubeIDE里生成.stldr别用手动cp命令,你先去工程属性的C/C++ Build里,检查链接器的Script file路径是不是真的选对了,路径错了才会先报链接脚本找不到。
童雨竹 发表于 2026-2-16 11:13 | 显示全部楼层
我怀疑你是把两个问题混在一起了,先解决链接脚本的问题,去工程→Properties→MCU Settings里重新生成下链接脚本,再把ld文件的路径在链接器设置里重新指定,别先管拷贝的事。
万图 发表于 2026-2-16 11:14 | 显示全部楼层
笑不活了,你看你cp命令里的文件名,STM32L4P5后面是MX25L,你是不是少打了下划线,变成STM32L4P5 MX25L了?路径里的符号错一个,系统就找不到,先把makefile里的路径字符核对一遍。
Wordsworth 发表于 2026-2-16 11:15 | 显示全部楼层
我建议你先把post-build里的cp命令注释掉,先编译出elf文件看看还报不报链接脚本的错,要是不报了,就是纯拷贝路径的问题,要是还报,再去调链接器的ld文件配置,分步排查更清楚。
Bblythe 发表于 2026-2-16 11:16 | 显示全部楼层
会不会是你的ld文件被重命名或者移位置了?工程里的4linker.ld是不是就是实际的链接脚本,你去链接器设置里把Script file直接指向这个4linker.ld,别用默认的路径,手动选绝对路径试试。
Pulitzer 发表于 2026-2-16 11:20 | 显示全部楼层
给你个小技巧,CubeIDE里生成外部loader的.stldr,最好把目标文件放在工程根目录,把cp命令改成cp "xxx.elf" "STM32L4P5_MX25L12833F.stldr",去掉上级目录的..\,先能生成再说。
Uriah 发表于 2026-2-16 11:20 | 显示全部楼层
你检查下工程的构建配置是不是Debug模式,有些时候Release模式的链接脚本路径和Debug不通用,还有ld文件里的芯片内存配置对不对,配置错了也会触发链接脚本找不到的提示。
Clyde011 发表于 2026-2-16 11:21 | 显示全部楼层
你这工程名里有空格吧,MedRF-mini External loader中间有空格,cp命令里就算加了引号,系统也可能识别异常,先把工程名和目标文件名的空格都替换成下划线,再重新编译试试。
powerantone 发表于 2026-2-17 14:01 | 显示全部楼层
.ld 文件路径是否正确,避免链接错误。
solty 发表于 2026-2-17 14:02 | 显示全部楼层
不要直接复制 ELF 文件作为 .stldr,因为 .stldr 是 ST-Link 专用格式,需要用 STM32CubeProgrammer 或 ST-Link Utility 生成。
probedog 发表于 2026-2-17 14:02 | 显示全部楼层
推荐使用 STM32CubeIDE 直接烧录 ELF 文件,避免手动处理 .stldr。
probedog 发表于 2026-2-17 14:02 | 显示全部楼层
如果必须生成 .stldr,使用 STM32CubeProgrammer CLI 命令
solty 发表于 2026-2-17 16:03 | 显示全部楼层
可能是链接脚本 (.ld) 路径配置错误,导致编译器找不到指定的脚本。
stormwind123 发表于 2026-2-17 18:03 | 显示全部楼层
.stldr 文件生成命令可能未正确执行。
classroom 发表于 2026-2-17 18:04 | 显示全部楼层
可能是项目配置问题,如输出目录或文件命名不一致。
cr315 发表于 2026-2-17 21:04 | 显示全部楼层
${BuildArtifactFileBaseName}.elf 是 ELF 文件名,但 .stldr 通常是 ST-Link 调试器使用的二进制格式,不是直接复制 ELF 文件就能生成的。.stldr 文件通常由 ST-Link Utility 或 STM32CubeProgrammer 生成,而不是直接复制 ELF 文件。
duo点 发表于 2026-2-17 22:05 | 显示全部楼层
用 STM32CubeProgrammer 打开 ELF 文件,然后导出为 .stldr 格式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

195

主题

195

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0