linux上编译electron源码

一、环境准备

1、系统安装

Electron 构建依赖 Chromium 工具链,因此必须使用较新的 64-bit Linux 系统。

推荐系统版本:Ubuntu22.04 64位

版本镜像下载链接:https://releases.ubuntu.com/22.04/ubuntu-22.04.5-desktop-amd64.iso

2、环境配置

(1)sudo apt update 更新软件列表

向系统设置的软件源服务器发送请求,获取最新的软件包索引,方便后续apt install安装的软件包信息是最新最全面的。

bash 复制代码
sudo apt-get update

(2)安装git: 方便从github上拉去electron源码

bash 复制代码
sudo apt install git

(3)安装python3 编译electron时,gclient、gnninja工具都会用到python3编译构建

bash 复制代码
sudo apt install python3-pip
sudo apt install python3

python3的安装可以使用pip3来做版本管理维护。

python3-pip 是 Python 3 的包管理器,用来安装、升级、卸载 Python 第三方库,是进行任何 Python 开发的基础工具。

(4)其他依赖安装

bash 复制代码
sudo apt install -y \
    build-essential pkg-config \
    curl zip unzip \
    libgtk-3-dev libnss3-dev libxss-dev libasound2-dev \
    libdrm-dev libgbm-dev libglib2.0-dev libpci-dev \
    libcups2-dev libxtst-dev libxkbfile-dev

clang lld使用的是鸿蒙编译工具链里的,不需要安装。否则也需要安装:

bash 复制代码
sudo apt-get install clang lld

下载 depot_tools后,里面已经自带 gclient 工具,不需要额外下载。

二、获取electron整个体系源码树

Electron 的源码并不是一个仓库,而是Electron 自己的代码、Chromium 上百个子仓库、数十 GB 的依赖代码(V8、Skia、Blink、Media...)。

1、获取 depot_tools(Electron/Chromium 的构建工具)

使用官方源下载(不推荐)

bash 复制代码
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
echo "export PATH=$(pwd)/depot_tools:\$PATH" >> ~/.bashrc
source ~/.bashrc

Chromium/Electron 的源码和依赖非常大(几十 GB),如果直接用官方 Git 仓库,国内下载非常慢甚至会超时,可以通过国内源加速。

bash 复制代码
# 克隆 depot_tools
git clone https://mirrors.tuna.tsinghua.edu.cn/git/depot_tools.git
echo 'export PATH=~/depot_tools:$PATH' >> ~/.bashrc
source ~/.bashrc

# 使用国内镜像同步 Chromium/Electron
export GIT_USE_CURL=1
export GIT_PROXY_COMMAND="git-remote-http"

# 配置 gclient 国内镜像加速
export GIT_USE_CURL=1
export NO_AUTH_BOTO_CONFIG=/dev/null
export GIT_HTTP_LOW_SPEED_LIMIT=0
export GIT_HTTP_MAX_REQUESTS=64

2、获取electron源码

bash 复制代码
git clone https://github.com/electron/electron.git

# 执行命令`git lfs pull`,确保仓库中的大文件已经下载完成
git lfs pull
bash 复制代码
# 配置 gclient 并同步依赖(浅克隆加速)
gclient config --name src/electron https://github.com/electron/electron
gclient sync --no-history --with_branch_heads --with_tags

3、生成构建配置

bash 复制代码
gn gen out/Release --args='import("//electron/build/args/release.gn")'

三、配置编译脚本

bash 复制代码
#!/bin/bash
# =====================================================
# 国内 Linux 自动化搭建 Electron 编译环境(升级版)
# 支持 Debug / Release 构建 + pip 虚拟环境
# 系统:Ubuntu / Debian
# =====================================================

set -e

WORKDIR=$HOME/electron_build
DEPOT_TOOLS=$HOME/depot_tools
VENV_DIR=$HOME/py_env

echo "============================================="
echo "1️⃣ 安装系统依赖..."
sudo apt update
sudo apt install -y git python3 python3-pip python3-venv build-essential pkg-config \
clang lld curl zip unzip \
libgtk-3-dev libnss3-dev libxss-dev libasound2-dev \
libdrm-dev libgbm-dev libglib2.0-dev libpci-dev \
libcups2-dev libxtst-dev libxkbfile-dev

echo "2️⃣ 创建 Python 虚拟环境..."
python3 -m venv $VENV_DIR
source $VENV_DIR/bin/activate
pip install --upgrade pip

echo "3️⃣ 下载 depot_tools(国内清华镜像)..."
if [ ! -d "$DEPOT_TOOLS" ]; then
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/depot_tools.git $DEPOT_TOOLS
else
    cd $DEPOT_TOOLS && git pull
fi

export PATH=$DEPOT_TOOLS:$PATH
echo 'export PATH=$DEPOT_TOOLS:$PATH' >> ~/.bashrc

echo "4️⃣ 配置 gclient 国内镜像加速..."
export GIT_USE_CURL=1
export NO_AUTH_BOTO_CONFIG=/dev/null
export GIT_HTTP_LOW_SPEED_LIMIT=0
export GIT_HTTP_MAX_REQUESTS=64

echo "5️⃣ 创建 Electron 工作目录..."
mkdir -p $WORKDIR && cd $WORKDIR

echo "6️⃣ 克隆 Electron 源码..."
if [ ! -d "electron" ]; then
    git clone https://github.com/electron/electron.git
else
    cd electron && git pull
fi
cd electron

echo "7️⃣ 配置 gclient 并同步依赖(浅克隆加速)..."
gclient config --name src/electron https://github.com/electron/electron
gclient sync --no-history --with_branch_heads --with_tags

echo "8️⃣ 生成构建配置..."
cd src
gn gen out/Debug --args='import("//electron/build/args/debug.gn")'
gn gen out/Release --args='import("//electron/build/args/release.gn")'

echo "============================================="
echo "环境搭建完成!"
echo "虚拟环境已激活,pip 已升级"
echo "Debug 构建路径: src/out/Debug"
echo "Release 构建路径: src/out/Release"
echo ""
echo "编译命令示例:"
echo "  ninja -C src/out/Debug electron   # Debug"
echo "  ninja -C src/out/Release electron # Release"
echo ""
echo "如果关闭终端,可重新激活 Python 虚拟环境:"
echo "  source $VENV_DIR/bin/activate"
相关推荐
frontend_frank20 小时前
脱离 Electron autoUpdater:uni-app跨端更新:Windows+Android统一实现方案
android·前端·javascript·electron·uni-app
cn_mengbei1 天前
鸿蒙PC原生应用开发避坑指南:Qt 6.6与Electron 28兼容性问题全解析
qt·electron·harmonyos
cn_mengbei1 天前
鸿蒙PC跨端开发实战:从Qt环境配置到Electron应用鸿蒙化的完整指南
qt·electron·harmonyos
呆头鸭L1 天前
用vue3+ts+elementPlus+vite搭建electron桌面端应用
前端·vue.js·electron
musashi2 天前
用 Electron 写了一个 macOS 版本的 wallpaper(附源码、下载地址)
前端·vue.js·electron
叶落无痕522 天前
Electron应用自动化测试实例
前端·javascript·功能测试·测试工具·electron·单元测试
卡布叻_星星2 天前
Vue3+Vite+Electron实现开发桌面应用
electron
ChangYan.2 天前
Electron使用ffi-napi报错External buffers are not allowed解决办法
前端·javascript·electron
薛定谔的猫-菜鸟程序员3 天前
从零到一:用Electron打造专业的Markdown转Word桌面应用。
javascript·electron·word
PBitW3 天前
Electron 脚本调用大坑!害惨我了
前端·electron