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.
错误原因
- 卷挂载参数格式错误:Docker的
-v参数需要明确指定本地路径:容器内路径的映射关系,你只提供了本地路径,Docker无法确定把本地目录挂载到容器的哪个位置,导致容器内找不到hello.c文件。 - 工作目录设置错误:
-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
相关产品推荐
相关产品推荐

