You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在MSYS2编译C++程序时遇文件不存在及权限拒绝问题求助

MSYS2编译C++程序的问题解决步骤

一、搞定"文件找不到"的报错

MSYS2是类Unix环境,直接用Windows的C:\格式路径容易出问题,尤其是路径带空格的时候,按下面的方法来:

  1. 转换路径格式:把Windows路径改成MSYS2的写法,比如C:\Users\myusername\OneDrive\Desktop\C++ Programming 21_11_2023要改成/c/Users/myusername/OneDrive/Desktop/C++ Programming 21_11_2023,然后用引号包裹整个路径避免空格干扰:
    g++ "/c/Users/myusername/OneDrive/Desktop/C++ Programming 21_11_2023/21nov2023program.cpp" -o 21nov.exe
    
  2. 更省心的方式:切换到代码目录:先cd到代码所在的文件夹,之后编译直接用文件名就行:
    cd "/c/Users/myusername/OneDrive/Desktop/C++ Programming 21_11_2023"
    g++ 21nov2023program.cpp -o 21nov.exe
    
    注意:输出文件后缀用.exe,别用.cpp,不然会和源文件搞混,还容易触发权限问题。

二、解决"权限拒绝"的报错

出现这个问题大概率是这几个原因,逐个排查:

  • 输出文件被占用:如果21nov.exe(或者之前错误命名的21nov.cpp)正在被记事本、其他终端打开,先关掉这些程序再编译。
  • OneDrive目录权限限制:OneDrive的同步机制可能会锁定文件,把代码复制到本地非同步目录(比如C:\temp\cpp_test),再切换到该目录编译。
  • 终端权限不够:右键点击MSYS2图标,选择"以管理员身份运行",再执行编译命令。

三、编译成功后运行程序

编译完成后,在MSYS2终端里直接敲下面的命令就能运行:

./21nov.exe

此时会输出Hello,说明程序运行正常。

内容的提问来源于stack exchange,提问作者user22960886

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:05:13