构建wxWidgets执行mingw32-make时出现访问被拒绝Error5报错
wxWidgets MinGW构建报Error 5权限拒绝的解决方法
问题表现
在wxWidgets源码包的build\msw目录下,通过CMD调用mingw32-make执行makefile.gcc构建时,抛出如下报错:
make (e=5): Acceso denegado. mingw32-make: [makefile.gcc:5354: clean] Error 5 (ignored)
已尝试的无效排查操作包括:
- 为wxWidgets解压文件夹添加Everyone用户并授予完全控制权限
- 为
C:\msys64\mingw64\bin下的make.exe配置完全控制权限 - 关闭Windows Defender实时防护,问题仍存在
报错根因
这个报错触发于构建前的clean阶段,对应Windows系统标准的「权限不足/访问被拒」错误,之前的排查没有覆盖三个核心触发点:
- 在Windows原生CMD下直接调用MSYS2自带的make工具时,MSYS2的路径映射规则和Windows原生路径不兼容,clean阶段调用的删除指令会被系统拦截
- wxWidgets压缩包解压后,部分自带文件默认带只读属性,常规删除指令操作只读文件会直接抛权限错误,之前的权限配置没有处理文件级的只读标记
- 如果源码放在C盘根目录、Program Files等受UAC管控的系统路径下,普通权限启动的CMD默认没有目录的写入、删除权限
修复步骤
按顺序操作,每步完成后可重新执行构建命令验证:
- 用管理员权限启动终端
右键点击命令提示符/对应终端图标,选择「以管理员身份运行」,再切换到build\msw目录执行构建命令,先排除UAC权限拦截。 - 递归移除所有源码文件的只读属性
在管理员权限的终端中切换到wxWidgets源码根目录,执行以下命令清除所有文件、文件夹的只读标记:attrib -r /s /d *.* - 使用匹配的终端环境执行构建
不要在原生Windows CMD中调用MSYS2的MinGW工具链,直接打开开始菜单里的「MSYS2 MinGW 64-bit」终端(不要开MSYS2默认的MSYS终端),通过Linux风格路径切换到build/msw目录(例如源码放在D盘dev目录下,路径为/d/dev/wxWidgets/build/msw),再执行构建命令。 - 手动跳过自带clean逻辑
如果上述操作后仍在clean阶段报错,直接手动删除build\msw目录下的gcc_mswuddll、gcc_mswudll两个默认构建产物目录,再执行构建命令,即可绕过makefile中触发报错的clean行。
额外提醒:不要将wxWidgets源码放在
C:\Program Files、C:\Windows等系统保护路径下,也不要放在包含中文、空格的路径中,避免路径解析异常触发额外报错。
内容的提问来源于stack exchange,提问作者ThreeNamesGrace
相关产品推荐
相关产品推荐

