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"
相关推荐
爱丶不疚3 天前
Electron net 模块你可以没用过,但不能不知道
前端·electron
瑞码空间6 天前
Web应用的多端部署之道:浏览器 · Electron · Docker
前端·docker·electron·浏览器·web
upgrador14 天前
桌面应用开发:Electron 与 NSIS 的关系、打包流程及 Windows 本地构建实战
javascript·windows·electron
盒子里的加菲猫15 天前
什么?不会C语言也可以搭建窗口级应用程序?(Electron)
c语言·开发语言·electron
薛定谔的猫-菜鸟程序员17 天前
基于 Electron 的本地短视频解析与下载工具:架构设计与工程实践
java·electron·音视频
imber18 天前
别把多平台发布当复制粘贴:一套可复用的内容工程工作流
electron
imber18 天前
Visual Muse 三平台真实发布验收
electron
前端逗比逗18 天前
Electron 全维度完整配置手册(最新稳定版,适配 Electron 25+)
前端·electron
寒水馨22 天前
Windows下载、安装electron-v43.2.0(附安装包electron-v43.2.0-win32-x64.zip)
javascript·windows·typescript·electron·跨平台·桌面应用·chromium
寒水馨22 天前
macOS下载、安装electron-v43.2.0(附安装包electron-v43.2.0-darwin-arm64.zip)
javascript·macos·electron·node.js·跨平台·桌面应用开发·开源框架