当前位置: 首页 > news >正文

提升WSL中Ubuntu编译速度的完整指南

在 WSL(Windows Subsystem for Linux)中使用 make 编译项目时,如果发现编译速度非常慢,通常是由以下几个原因导致的。以下是一些常见的排查和优化方法:


🔍 一、常见原因及解决方案

✅ 1. 文件系统性能问题(最常见)

WSL 对 挂载在 /mnt/ 下的 Windows 文件系统(如 NTFS)访问性能较差,尤其是大量小文件的读写操作(例如编译过程中的临时文件生成、频繁 IO 操作)。

📌 解决方案:
  • 将源代码放在 WSL 的 Linux 文件系统中,而不是 Windows 挂载目录下。

    示例路径:

    # 推荐位置:位于 WSL 根文件系统内
    ~/myproject
    /home/yourname/myproject
    

    ❌ 不推荐路径:

    /mnt/c/Users/yourname/myproject   # 来自 Windows 盘符
    

✅ 2. 禁用实时杀毒软件或索引服务

Windows 的防病毒软件(如 Windows Defender)会对 WSL 中的文件访问进行扫描,显著影响性能。

📌 解决方案:
  • 添加 WSL 的项目目录到防病毒软件的排除列表。
  • 或者临时禁用防病毒软件测试是否有效果。

✅ 3. 使用 WSL2 而不是 WSL1

如果你还在使用 WSL1,它虽然兼容性好,但文件系统桥接较慢;而 WSL2 使用虚拟化技术,原生 Linux 内核,对编译更友好。

📌 查看当前 WSL 版本:
wsl --list --verbose
📌 设置默认版本为 WSL2:
wsl --set-default-version 2
📌 将已有 Ubuntu 分发版升级为 WSL2:
wsl --set-version Ubuntu 2

✅ 4. 启用更多 CPU 核心 / 内存资源

默认情况下,WSL2 可能只分配了部分 CPU 和内存资源,可以手动设置限制。

📌 创建 .wslconfig 文件(在 Windows 用户目录下):
[wsl2]
memory=8GB
processors=4

然后重启 WSL:

wsl --shutdown
wsl

✅ 5. 并行编译(启用多线程)

确保你使用的是并行编译方式,比如:

make -j$(nproc)

或者指定具体线程数(例如 4 核):

make -j4

✅ 6. 更新 WSL 和 Ubuntu

确保你的 WSL 和 Ubuntu 是最新版本:

升级 WSL:
wsl --update
升级 Ubuntu 包:
sudo apt update && sudo apt upgrade -y

🧪 二、测试建议

你可以通过下面命令快速测试一下 WSL 的文件 I/O 性能:

dd if=/dev/zero of=testfile bs=1M count=100 oflag=direct
rm testfile

也可以测试 /tmp/mnt/c 的性能差异,确认是否是文件系统的问题。


📝 三、总结优化建议

问题点建议
文件系统慢使用 WSL2 + 放在 Linux 文件系统中
防病毒干扰排除项目路径
编译效率低使用 -j$(nproc) 并行编译
资源不足配置 .wslconfig 增加内存和 CPU
WSL 版本旧更新到 WSL2

相关文章:

  • 【地图】腾讯地图页面卡顿问题解决
  • ubuntu中,文本编辑器nano和vim区别,vim的用法
  • WebSocket与实时对话式AI服务的集成
  • 什么是VR全景相机?如何选择VR全景相机?
  • 数控技术应用理实一体化平台VR实训系统
  • ubuntu 22.04安装k8s高可用集群
  • JVM Full GC 频繁问题排查、优化及解决方案
  • 西门子嵌入式学习笔记---(1)裸机和调度器开发
  • 【解决办法】ubuntu重启不起来,输入用户名和密码进不去,又重新返回登录页。
  • OBOO鸥柏丨2025年鸿蒙生态+国产操作系统触摸屏查询一体机核心股
  • 【SpringBoot】零基础全面解析SpringBoot配置文件
  • 【Python 进阶】抽象基类(Abstract Base Class)
  • 多部手机连接同一wifi的ip一样吗?如何更改ip
  • 软考-系统架构设计师-第一章 架构设计基础
  • python + vscode 开发环境搭建
  • AI编程报错 API流式传输失败解决方案
  • thinkphp 5.1 部分知识记录<一>
  • Executors面试题
  • 利用Flask来实现留言板的基本操作
  • 异步上传石墨文件进度条前端展示记录(采用Redis中List数据结构实现)
  • 给家乡做网站/百度快照优化的优势是什么
  • 网页网站开发项目设计/站长工具seo综合查询问题
  • 全站搜索/免费关键词挖掘网站
  • wordpress 婚庆/baike seotl
  • wordpress增加页面分类/seo优化易下拉排名
  • java做网站开发/福州seo博客