使用emcc编译fibonacci.c时遭遇Permission denied错误求助
Emscripten编译时llvm-objcopy权限拒绝错误的解决办法
问题场景
在Windows 11下执行emcc fibonacci.c -o fibonacci.html --emrun编译C代码时,出现以下错误:
C:\emsdk-main\upstream\bin\llvm-objcopy.exe: error: permission denied emcc: error: 'C:/emsdk-main/upstream/bin\llvm-objcopy.exe fibonacci.wasm fibonacci.wasm --remove-section=.debug* --remove-section=producers' failed (returned 1)
无法生成目标HTML文件,核心问题是llvm-objcopy无法访问或修改生成的.wasm文件。
排查与解决方案
1. 解除文件占用
- 原因:之前的编译进程未正常退出,或文件管理器、预览工具等程序锁定了
fibonacci.wasm文件。 - 解决:
- 关闭所有打开该文件的程序,重启命令行窗口。
- 手动删除当前目录下的
fibonacci.wasm(如果存在),再重新执行编译命令。
2. 提升权限或更换目录
- 原因:命令行权限不足,或代码存放在系统保护目录(如
C:\Program Files)下,无法修改文件。 - 解决:
- 右键命令行工具(CMD/PowerShell),选择「以管理员身份运行」,再执行编译命令。
- 将代码文件移到非系统目录(如
D:\emscripten_projects),在新目录下重新编译。
3. 修复Emscripten环境
- 原因:llvm-objcopy.exe权限异常,或Emscripten环境安装不完整。
- 解决:
- 打开emsdk所在目录,依次执行以下命令重新激活环境:
emsdk activate latest emsdk_env.bat - 如果激活后问题仍存在,卸载并重新安装Emscripten,确保安装过程中无权限拦截。
- 打开emsdk所在目录,依次执行以下命令重新激活环境:
4. 排除杀毒软件拦截
- 原因:Windows Defender或第三方杀毒软件误判llvm-objcopy的文件操作为恶意行为,阻止了修改。
- 解决:
- 临时关闭杀毒软件防护,重新编译测试。
- 将
C:\emsdk-main目录添加到杀毒软件的信任列表,避免后续拦截。
验证
编译成功后,目录下会生成fibonacci.html、fibonacci.js、fibonacci.wasm三个文件,执行emrun fibonacci.html即可在浏览器中运行测试。
内容的提问来源于stack exchange,提问作者kai00
相关产品推荐
相关产品推荐

