先确认 qt creator 进程是否以足够权限运行,再检查输出路径的文件系统权限和安全软件拦截;windows需以管理员身份运行,linux/macos需避免sudo启动并修复build目录属主,同时排查杀软拦截与挂载限制。

cannot open output file、Permission denied、无法启动程序。路径或者权限错误?——这些报错背后,90%不是代码问题,而是 Qt Creator 没拿到它该有的“钥匙”。
直接说结论:**先确认 Qt Creator 进程是否以足够权限运行,再检查输出路径的文件系统权限和安全软件拦截**。其他排查都是在这两层基础上展开的。
Qt Creator 是否以管理员/高完整性级别运行?
Windows 上双击启动的 Qt Creator 默认是“中等完整性级别”,写不到 C:\Program Files 或修改 HKEY_LOCAL_MACHINE;Linux/macOS 下若之前用 sudo 启动过,残留的 .pro.user 或构建目录可能属 root,普通用户就卡在 Permission denied。
- Windows:右键 Qt Creator 快捷方式 → “以管理员身份运行”;或进属性 → 兼容性 → 勾选“以管理员身份运行此程序”
- Linux:别用
sudo qtcreator,改用qtcreator &;若已误用,删掉项目根目录下的.pro.user和build-*目录再重试 - macOS:检查 Qt Creator 是否从 dmg 安装后拖入 /Applications,而非保留在下载目录(沙盒限制更严)
输出目录(debug/release)有没有写权限?
Qt Creator 编译时要往 build-<project>-Desktop_Qt_*.qmake</project> 这类目录里写 .o、.a、最终的可执行文件。如果目录属别人、被只读挂载、或父目录没执行权限(Linux/macOS),就会报 cannot open output file。
Qt Creator 18.0.2 Windows x86_64 历史版本安装包,适合需要旧版本 IDE、旧项目兼容、Qt/C++ 项目维护、构建套件配置和调试环境回退的用户使用。
- Windows:右键目标 build 目录 → 属性 → 安全 → 编辑 → 确保当前用户有“完全控制”
- Linux/macOS:
ls -ld build-*查看权限;若显示drwxr-xr-x 1 root root,就sudo chown -R $USER:$USER build-* - 特别注意麒麟等国产系统:
mount | grep noexec,若输出路径挂载带noexec,需sudo mount -o remount,exec /path
杀软或系统安全策略在偷偷拦截?
360、腾讯电脑管家、火绒、麒麟 KYSEC 都干过这事:把 Qt 编译生成的临时可执行文件当“可疑行为”直接拦掉,不报错、不提示,只让链接器失败。
- 临时验证:关闭杀软实时防护,clean + rebuild 一次;恢复后把 Qt Creator 和 build 目录加白名单
- 麒麟系统:
sudo setstatus soft可临时切软模式(仅调试用,勿长期开启) - Windows Defender:检查“病毒和威胁防护” → “勒索软件防护”是否启用,它会锁
build目录
Qt 版本切换或跨机器打开项目引发的配置残留
.pro.user 文件存的是本地 Qt Kit、编译器路径、构建目录等硬编码配置。换 Qt 版本、换电脑、甚至只是同事发来一个项目,都可能让 Qt Creator 试图往一个不存在或无权访问的路径写东西。
- 最简单有效的动作:
rm -f *.pro.user build-*(Linux/macOS)或手动删掉.pro.user和整个build-xxx文件夹 - 不要重命名或移动项目目录后再打开——Qt Creator 会沿用旧路径记录,但实际目录已变
- 若用 CMakeLists.txt,检查
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ...)是否指向了受限路径
noexec,又开了 KYSEC,还用 sudo 启动过 Qt Creator 导致 build 目录属 root。这时候单改一项没用,得按顺序一层层剥开。










