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

Windows 11下使用GCC镜像构建C程序失败问题排查

Windows 11下Docker GCC镜像运行命令错误排查与解决

问题重现

原Linux环境下的Docker命令:

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp gcc:4.9 gcc -o hello hello.c

你在Windows 11 PowerShell中使用的命令:

docker run --rm -v /G/Docker/00100_start -w /G/Docker/00100_start/ gcc:4.9 gcc -o hello hello.c

执行后报错:

gcc: error: hello.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.

错误原因

  1. 卷挂载参数格式错误:Docker的-v参数需要明确指定本地路径:容器内路径的映射关系,你只提供了本地路径,Docker无法确定把本地目录挂载到容器的哪个位置,导致容器内找不到hello.c文件。
  2. 工作目录设置错误:-w参数指定的是容器内的工作目录,你写的是本地Windows路径格式,且没有对应到容器内的挂载点,容器内根本不存在/G/Docker/00100_start/这个路径。

解决方法

方法一:修正挂载与工作目录参数(推荐)

直接指定完整的路径映射关系,确保容器能正确访问本地文件:

docker run --rm -v "G:/Docker/00100_start:/usr/src/myapp" -w /usr/src/myapp gcc:4.9 gcc -o hello hello.c
  • -v "G:/Docker/00100_start:/usr/src/myapp":将本地G盘的00100_start目录映射到容器内的/usr/src/myapp目录
  • -w /usr/src/myapp:设置容器的工作目录为挂载点,和原Linux命令逻辑一致
  • 确保hello.c文件确实存在于本地的G:\Docker\00100_start目录中

方法二:利用PowerShell当前路径变量简化命令

如果已经在PowerShell中切换到G:\Docker\00100_start目录,可以用${PWD}变量自动获取当前路径:

docker run --rm -v "${PWD}:/usr/src/myapp" -w /usr/src/myapp gcc:4.9 gcc -o hello hello.c

Docker会自动处理PowerShell路径到容器内Linux路径的转换。

额外检查项

  • 确认Docker Desktop已开启G盘的文件共享权限:打开Docker Desktop设置 → Resources → File Sharing,勾选G盘并保存设置
  • 核对文件名大小写:Linux容器内区分大小写,确保本地文件名为hello.c,而非Hello.c或其他变体

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:40:31