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

如何在WSL中成功安装并运行GCC?附跨系统调用与文件路径疑问

WSL 安装GCC失败问题梳理

Windows版Linux子系统作为虚拟机的轻量替代方案,非常适合Linux学习场景,但它的文件管理逻辑和传统虚拟机差异很大,刚接触的用户很容易搞不懂逻辑。例如WSL的系统数据默认存储在Windows侧的映射路径为:
C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\usr\

实际遇到的问题流程

  1. 第一次安装GCC时,在WSL终端输入命令:
    sudo apt install gcc
  2. 输入版本验证命令:
    gcc --version
    系统返回结果:
    Command 'gcc' not found, but can be installed with:
    sudo apt install gcc
    
  3. 参考过其他技术社区的解决方案后,依次执行了以下命令:
    sudo apt-get update && sudo apt-get upgrade -y
    sudo apt autoremove -y
    sudo apt-get install gcc -y
    
    执行完成后再次验证GCC版本,仍然报相同的找不到命令的错误。

目前我已经在Windows系统中安装了TDM-GCC,之前在传统虚拟机环境下也通过sudo命令成功安装过GCC。现在希望用WSL替代虚拟机,降低C语言开发时的内存占用,具体疑问包括:

  • 累计尝试下载了多少次GCC安装文件?
  • 在Windows资源管理器中查看本该存储GCC文件的路径,为什么显示为空?
  • 下载的GCC安装文件实际被存储在哪个位置?
  • 怎么操作才能在WSL中正常启动使用GCC?
  • 能不能在WSL终端里直接调用Windows系统下已经安装好的GCC来编译C代码?

以上疑问都源于对WSL与Windows的文件系统交互逻辑不熟悉,希望得到针对性的实用解答,避免因虚拟机内存占用过高频繁中断开发流程。


对应问题解答

  • 安装尝试次数统计
    你一共发起过2次GCC安装请求:第一次是直接执行sudo apt install gcc,第二次是执行完系统更新、无用依赖清理后的sudo apt-get install gcc -y,两次流程都没有完成实际的包部署,所以系统始终找不到GCC命令。
  • Windows侧路径显示为空的原因
    你在Windows资源管理器中打开的rootfs/usr路径,本身就是WSL对Windows侧暴露的过滤视图——WSL会默认隐藏系统级目录的真实文件内容,避免Windows侧的程序误修改系统文件导致WSL文件系统损坏,所以你看到的空路径是正常的权限控制表现,不代表WSL内部对应路径真的没有文件。
  • 安装文件的实际存储位置
    apt下载的软件包缓存,实际存放在WSL内部的路径为/var/cache/apt/archives/,对应Windows资源管理器的映射路径是rootfs/var/cache/apt/archives/,只是这个目录默认对Windows侧的浏览权限做了隐藏,所以你在资源管理器里看不到。
    绝大多数情况下安装失败的核心原因,是执行sudo apt install前没有完成软件源索引更新,或者安装过程中出现了磁盘空间不足、依赖版本冲突的报错(这类报错信息往往滚动显示在终端上方,很容易被忽略),导致安装包没有解压部署到系统可执行文件目录/usr/bin下。
  • WSL中正常使用GCC的操作步骤
    1. 先在WSL终端执行df -h /,确认WSL虚拟磁盘的剩余空间大于2G,排除空间不足导致安装中断的问题;
    2. 执行sudo apt update,等待软件源索引更新完成,不要中途关闭窗口;
    3. 执行sudo apt install --reinstall gcc g++ build-essential,安装完成后在WSL内部执行which gcc确认命令路径,不要通过Windows资源管理器查看文件是否存在。
  • WSL调用Windows侧GCC的可行性
    完全可以实现。WSL默认配置下会自动把Windows系统的PATH路径注入到WSL的环境变量中,你只需要在WSL终端执行which gcc,如果输出路径是/mnt/c/TDM-GCC-64/bin/gcc.exe这类带/mnt/c前缀的地址,就说明已经可以直接调用Windows侧的TDM-GCC完成编译。
    需要注意的是,跨系统调用编译生成的可执行文件是Windows原生格式,无法在WSL的Linux环境下直接运行。如果只是做C代码语法检查、生成Windows端可执行文件可以直接使用,如果需要编译能在Linux环境下运行的程序,还是建议在WSL内部原生安装GCC。
    另外,尽量不要在Windows资源管理器中直接修改WSL rootfs目录下的文件,这类操作很容易造成WSL文件系统权限损坏,所有涉及WSL内部文件的调整,都建议在WSL终端内完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 09:36:04