提升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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81872.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81872.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81872.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

77. 組合【 力扣(LeetCode) 】

文章目錄 零、原題鏈接一、題目描述二、測試用例三、解題思路四、參考代碼 零、原題鏈接 77. 組合 一、題目描述 給定兩個整數 n 和 k,返回范圍 [1, n] 中所有可能的 k 個數的組合。 你可以按 任何順序 返回答案。 二、測試用例 示例 1: 輸入&…

C++中指針與引用的區別詳解:從原理到實戰

C中指針與引用的區別詳解:從原理到實戰 1. 引言:指針與引用的重要性 在C編程中,指針和引用是兩個極其重要的概念,也是許多初學者容易混淆的地方。作為C的核心特性,它們直接操作內存地址,提供了對內存的直…

WebFuture:網站部分圖片突然無法顯示的原因

問題描述: 主站群遷移到linux系統后,原先部署在windows下的子站群節點部分圖片無法顯示。 原因分析: 檢查無法顯示的圖片的路徑,發現調用的是原先主站的圖片。主站重新部署到linux系統后,圖片路徑會區分大小寫所以統…

uniapp使用Canvas生成電子名片

uniapp使用Canvas生成電子名片 工作中有生成電子名片的一個需求&#xff0c;剛剛好弄了發一下分享分享 文章目錄 uniapp使用Canvas生成電子名片前言一、上代碼&#xff1f;總結 前言 先看效果 一、上代碼&#xff1f; 不對不對應該是上才藝&#xff0c;哈哈哈 <template…

PostgreSQL ALTER TABLE 命令詳解

PostgreSQL ALTER TABLE 命令詳解 引言 PostgreSQL 是一款功能強大的開源關系型數據庫管理系統&#xff0c;它提供了豐富的命令來幫助數據庫管理員和開發者管理數據庫中的表。其中&#xff0c;ALTER TABLE 命令是 PostgreSQL 中最常用的命令之一&#xff0c;用于修改表的結構…

Kafka KRaft + SSL + SASL/PLAIN 部署文檔

本文檔介紹如何在 Windows 環境下部署 Kafka 4.x&#xff0c;使用 KRaft 模式、SSL 加密和 SASL/PLAIN 認證。stevensu1/kafka_2.13-4.0.0 1. 環境準備 JDK 17 或更高版本Kafka 4.x 版本&#xff08;本文檔基于 kafka_2.13-4.0.0&#xff09; 2. 目錄結構 D:\kafka_2.13-4.…

MQTT協議,EMQX部署,MQTTX安裝學習

一、MQTT概述 1.什么是MQTT MQTT是一種基于“發布訂閱“”模式的消息傳輸協議。 消息&#xff1a;設備和設備之間傳輸的數據&#xff0c;或者服務和服務之間要傳輸的數據。 協議&#xff1a;傳輸數據時所遵循的規范。 2.常見的通訊模式 &#xff08;1&#xff09;客戶端-服…

Java Web 開發詳細流程

&#x1f9ed; 一、項目立項與需求分析階段&#xff08;0%&#xff09; 1.1 商業需求確認 與產品經理溝通核心業務目標 目標&#xff1a;構建一個圖書管理系統用戶&#xff1a;圖書管理員、普通用戶功能&#xff1a;登錄、查看、增刪改圖書、權限控制、分頁、搜索 1.2 輸出文…

學習路之PHP--easyswoole_panel安裝使用

學習路之PHP--easyswoole_panel安裝使用 一、新建文件夾二、安裝三、改配置地址四、訪問 IP:Port 自動進入index.html頁面 一、新建文件夾 /www/wwwroot/easyswoole_panel 及配置ftp 解壓easyswoole_panel源碼 https://github.com/easyswoole-panel/easyswoole_panel 二、安…

軟件設計綜合知識

software-design 軟考中級-軟件設計師-綜合知識&#xff1a;計算機系統基礎、操作系統、計算機網絡與信息安全、程序語言基礎、數據庫基礎、數據結構與算法、軟件工程基礎知識、標準與知識產權等。 —— 2025 年 3 月 5 日 甲辰年二月初六 驚蟄 目錄 software-design1、計算機基…

海思 35XX MIPI讀取YUV422

1.項目背景&#xff1a; 使用海思芯片&#xff0c;接收FPGA發送的MIPI數據&#xff0c;不需要ISP處理&#xff0c;YUV圖像格式為YUV422。 2.移植MIPI驅動 修改IMX347的驅動遠嗎&#xff0c;將I2C讀寫的部分注釋&#xff0c;其他的不用再做修改。 int imx347_slave_i2c_init(ot…

算力租賃革命:彈性模式如何重構數字時代的創新門檻?

一、算力革命&#xff1a;第四次工業革命的核心驅動力? 在科技飛速發展的當下&#xff0c;我們正悄然迎來第四次工業革命。華為創始人任正非在一場程序設計競賽中曾深刻指出&#xff0c;這場革命的基礎便是大算力。隨著 5G、人工智能、大數據、物聯網等信息技術的迅猛發展&am…

改寫自己的瀏覽器插件工具 myChromeTools

1. 起因&#xff0c; 目的: 前面我寫過&#xff0c; 自己的一個瀏覽器插件小工具 最近又增加一個小功能&#xff0c;可以自動滾動頁面&#xff0c;尤其是對于那些瀑布流加載的網頁。最新的代碼都在這里 2. 先看效果 3. 過程: 代碼 1, 模擬鼠標自然滾動 // 處理滾動控制邏輯…

深度學習篇---OC-SORT簡介

OC-SORT&#xff08;Observation-Centric SORT&#xff09;是一種以觀測為中心的多目標跟蹤算法&#xff0c;旨在解決傳統 SORT 算法在目標遮擋、外觀變化和復雜交互場景下關聯準確性不足的問題。以下是其詳細介紹&#xff1a; 核心創新點 以觀測為中心的在線平滑&#xff08…

硬件工程師筆記——二極管Multisim電路仿真實驗匯總

目錄 1 二極管基礎知識 1.1 工作原理 1.2 二極管的結構 1.3 PN結的形成 1.4 二極管的工作原理詳解 正向偏置 反向偏置 multisim使用說明鏈接 2 二極管特性實驗 2.1 二極管加正向電壓 2.2 二極管加反向電壓 2.3 二極管兩端的電阻 2.4 交流電下二級管工作 2.5 二極…

vscode中讓文件夾一直保持展開不折疊

vscode中讓文件夾一直保持展開不折疊 問題 很多小伙伴使用vscode發現空文件夾會折疊顯示, 讓人看起來非常難受, 如下圖 解決辦法 首先打開設置->setting, 搜索compact Folders, 去掉勾選即可, 如下圖所示 效果如下 看起來非常爽 ! ! !

設計模式學習筆記

設計模式 一&#xff1a;分類&#xff1a; 創建型模式 用于描述“怎樣創建對象”&#xff0c;它的主要特點是“將對象的創建與使用分離”。GoF&#xff08;四人組&#xff09;書中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種創建型模式。 結構型模式 用于描述如何將…

Kaggle-Predict Calorie Expenditure-(回歸+xgb+cat+lgb+模型融合+預測結果)

Predict Calorie Expenditure 題意&#xff1a; 給出每個人的基本信息&#xff0c;預測運動后的卡路里消耗值。 數據處理&#xff1a; 1.構造出人體機能、運動相關的特征值。 2.所有特征值進行從新組合&#xff0c;注意唯獨爆炸 3.對連續信息分箱變成離散 建立模型&#x…

第十二篇:MySQL 分布式架構演進與云原生數據庫探索

本篇聚焦 MySQL 在互聯網架構演進過程中的角色變化&#xff0c;探討其從單體向分布式、再向云原生架構轉型的關鍵技術路徑與實踐建議。 一、傳統單體架構下的 MySQL 應用模式 在早期項目中&#xff0c;MySQL 多用于中小型應用&#xff1a; 單節點部署&#xff1b; 水平擴展難…

JVM——回顧:JVM的起源、特性與系統構成

引入 在當今數字化時代&#xff0c;Java語言及其運行環境Java虛擬機&#xff08;JVM&#xff09;在軟件開發領域占據著舉足輕重的地位。從大型企業級應用到各類移動應用&#xff0c;JVM憑借其獨特的特性和強大的功能&#xff0c;為開發者提供了高效且穩定的運行環境。 JVM的起…