MDK Error: Q0122E :Could not open file ‘xxxx.axf‘: No such file or directory

在使用正点原子的LED程序时,用户遇到生成bin文件报错的问题。问题在于使用相对路径从fromelf.exe转换.axf到.bin时失败。尝试了多种网络上的解决方案,包括删除lst文件、更改相对路径为点号,但未成功。最终在StackOverflow上找到答案,通过将路径改为绝对路径或者使用fromelf.exe的特殊参数直接引用编译输出路径解决了问题。

使用正点的LED程序,在生成bin文件时,总是报错,用stm32cubemx生成的文件,用相对文件路径都可以生成,但是正点这个不行,有些奇怪,找了这个朋友发的原来是路径问题,经测试发现正常。

“”在学习iap的过程中想要生成一个bin文件,发现需要在keil的user选项卡中配置下路径,通过fromelf.exe把xxx.axf转换成xxx.bin。但是采用原子的路径配置方法:D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe(这里替换成自己的keil路径)   --bin -o  ..\OBJ\xxx.bin ..\OBJ\xxx.axf  发现会报错Error: Q0122E  Could not open file 'xxxx.axf': No such file or directory。但实际上我的OBJ文件夹里已经有xxxx.axf这个文件了。

前前后后折腾了一下小时,尝试了网上的各种方法,包括删除lst文件重新编译或者把相对地址中的..\改为.\ ,依旧没能解决这个问题。最后在stackoverflow上找到了解决方法,将bin文件和axf文件的相对地址改为绝对地址。

例如:将D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe(这里替换成自己的keil路径)   --bin -o  ..\OBJ\xxx.bin ..\OBJ\xxx.axf 改为完整路径D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe(这里替换成自己的keil路径)   --bin -o  "C:\xxx\OBJ\xxx.bin"  "C:\xxx\OBJ\xxx.axf"

另一个更简单的办法,直接添加:  fromelf.exe --bin -o "$L@L.bin" "#L",就不用纠结路径了,具体见下图(图片引用自:http://forum.eepw.com.cn/forum/thread/threadid/278520)“”

在使用 Keil 编译 ARM 嵌入式项目时,出现错误信息 `Error Q0122E: Could not open file 'Fire_FreeRTOS.axf': No such file or directory`,通常表示编译器无法找到或生成指定的 `.axf` 输出文件。这种情况可能由多种原因引起,包括路径配置错误、文件未正确生成、项目设置不当等。 ### 错误分析 1. **输出路径配置错误** 编译器尝试将生成的 `.axf` 文件输出到指定的目录,但该目录不存在或路径中包含非法字符。需要检查项目选项中设置的输出路径是否正确,确保目标路径确实存在,并且路径中没有空格或特殊字符。 2. **文件未成功生成** 如果编译过程中发生错误,导致链接阶段未能完成,`.axf` 文件将不会被创建。应检查编译日志中是否有其他错误或警告,尤其是链接器错误,这些可能阻止了最终文件的生成。 3. **权限问题** 编译器可能没有权限在目标目录中创建文件。确保运行 IDE 的用户具有对目标路径的写入权限。 4. **Keil 未正确注册或授权** 在某些情况下,Keil MDK 未正确注册可能导致编译过程异常,例如无法生成 `.axf` 文件或提示找不到 `.sct` 散列文件[^3]。请确保 Keil 已正确安装并激活。 5. **工程配置问题** 检查是否在“Options for Target”中正确配置了输出文件名和类型。确保“Name of Executable”字段与期望的 `.axf` 文件名一致。 ### 解决方案示例 - **检查并更正输出路径** 在 Keil μVision 中,依次点击 `Project > Options for Target > Output`,确认“Select Folder for Objects”指向一个有效的目录。如果路径错误,手动更正为一个存在的目录。 - **清理并重新构建项目** 使用快捷键 `Ctrl + Shift + F7` 清理项目,然后重新构建。这可以解决因旧文件残留导致的路径冲突问题。 - **检查编译日志** 查看 Build Output 窗口中的完整编译日志,确认是否有其他错误先于 `Q0122E` 错误发生。优先解决这些错误,尤其是链接器错误。 - **确认 Keil 授权状态** 打开 `Help > License Management`,确认 Keil 已正确激活,尤其是针对 ARM 编译器组件。 - **手动创建输出目录** 如果编译器无法自动创建输出目录,可以手动在文件系统中创建目标文件夹,例如 `OBJ` 或 `OUT`,然后重新编译项目。 ### 示例:检查输出设置 ```c // 该代码仅为示意,实际无需添加 // 在 Keil 中应通过图形界面设置输出路径和文件名 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值