RT-Thread论坛
直播中

发生的方式

9年用户 1325经验值
擅长:处理器/DSP
私信 关注
[问答]

keil无法写入wsl文件怎么解决?

使用rt-thread的容器开发,想要在windows上打开并编译保存在wsl2中的项目,遇到如下错误


  • Could not create/access path '.Objects' !

  • E404       : Cannot copy dbgconf file - from 'D:/Program Files (x86)/Keil_v5/Arm/Packs/Keil/STM32F1xx_DFP/2.4.0/Debug/STM32F101_102_103_105_107.dbgconf' to 'wsl.localhostDebianhomessrworkspacestest-gitrt-threadbspstm32stm32f103-100ask-miniDebugConfigrt-thread_STM32F103C8_1.0.0.dbgconf'




回帖(1)

刘杰

2025-9-17 17:47:14

要解决Keil在Windows中无法写入WSL2文件系统的问题,可以按照以下步骤操作:


原因分析:


Keil运行在Windows环境,而项目路径位于WSL2的Linux文件系统(\wsl$...)。Windows应用直接访问WSL2文件系统时存在权限和兼容性问题,导致无法创建/写入文件。




解决方案:


方法1:将项目复制到Windows文件系统(推荐)




  1. 定位WSL项目路径

    在WSL终端输入:  


    echo $(wslpath -w "$(pwd)")

    复制输出的Windows格式路径(类似 \wsl$Debianhome...)。




  2. 通过Windows资源管理器访问

    在Windows中按 Win+R → 输入 \wsl$Debian(替换为你的发行版名)→ 找到项目文件夹。




  3. 复制到Windows磁盘

    将整个项目文件夹复制到NTFS分区(如 D:rt-thread-projects)。




  4. 在Keil中打开新位置的项目

    使用复制后的路径(如 D:rt-thread-projects...project.uvprojx)编译即可解决写入问题。




方法2:修改Keil输出路径(临时解决)



  1. 在Keil中打开项目

  2. 进入 Options for Target → Output


  3. OutputObjects 路径改为Windows本地路径(如 C:Keil_OBJ

  4. Listing 选项卡中同样修改输出路径


方法3:配置WSL文件权限


在WSL中运行:


# 递归添加写权限(需在项目目录上级操作)
sudo chmod -R u+w /home/yourname/workspace

# 关闭WSL严格权限(不推荐)
sudo nano /etc/wsl.conf

添加以下内容:


[automount]
options = "metadata,umask=022"

重启WSL:在PowerShell运行 wsl --shutdown


方法4:检查防病毒软件


临时禁用Windows Defender或第三方杀毒软件,排除权限拦截。




根本解决建议:


优先使用方法1(项目放在Windows分区)。WSL2的Linux文件系统(ext4)通过9P协议挂载到Windows,性能差且权限兼容性不佳。开发流程优化建议:



  1. 代码编辑/版本管理在WSL中操作

  2. 编译时通过复制到Windows分区使用Keil

  3. 调试完成后将生成文件同步回WSL(若有需要)



⚠️ 注意:直接修改WSL文件权限可能导致系统不稳定,方法3仅作临时尝试。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分