构建步骤(Linux)

按照下面的指南在Linux下构建 Electron 本身,以此创建自定义 Electron 二进制文件。 为了将您的应用代码与预构建的 Electron 二进制文件打包并发布,请参阅 应用程序发布 指南。

前提条件

  • 至少 25GB 硬盘空间 和 8GB 内存.

  • Python 2.7.x. Some distributions like CentOS 6.x still use Python 2.6.x so you may need to check your Python version with python -V.

    Please also ensure that your system and Python version support at least TLS 1.2. For a quick test, run the following script:

    1. $npx @emen/chect-python-tls

    如果脚本反映你的设置使用过时的安全协议,请用系统的软件包管理器更新Python在2.7.x中的最高版本。 或者,您也可以访问 https://www.python.org/downloads/ ,以获取更加详细的指导信息。

  • Node.js. 有多种方法安装 Node.js。 您可以从 Nodejs.org 下载源代码并进行编译。 也可以作为一个标准的用户在 home 目录下安装 node. 或者尝试使用 NodeSource 仓库

  • clang 3.4 或更高版本。

  • Заголовочные файлы от GTK 3 и libnotify.

在 Ubuntu, 安装下面的库:

  1. $ sudo apt-get install build-essential clang libdbus-1-dev libgtk-3-dev \
  2. libnotify-dev libgnome-keyring-dev \
  3. libasound2-dev libcap-dev libcups2-dev libxtst-dev \
  4. libxss1 libnss3-dev gcc-multilib g++-multilib curl \
  5. gperf bison python-dbusmock openjdk-8-jre

在 RHEL / CentOS, 安装下面的库:

  1. $ sudo yum install clang dbus-devel gtk3-devel libnotify-devel \
  2. libgnome-keyring-devel xorg-x11-server-utils libcap-devel \
  3. cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \
  4. nss-devel python-dbusmock openjdk-8-jre

在 Fedora, 安装下面的库:

  1. $ sudo dnf install clang dbus-devel gtk3-devel libnotify-devel \
  2. libgnome-keyring-devel xorg-x11-server-utils libcap-devel \
  3. cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \
  4. nss-devel python-dbusmock openjdk-8-jre

On Arch Linux / Manjaro, install the following libraries:

  1. $ sudo pacman -Syu base-devel clang libdbus gtk2 libnotify \
  2. libgnome-keyring alsa-lib libcap libcups libxtst \
  3. libxss nss gcc-multilib curl gperf bison \
  4. python2 python-dbusmock jdk8-openjdk

Other distributions may offer similar packages for installation via package managers such as pacman. Or one can compile from source code.

交叉编译

如果想创建一个 arm target ,应当还要下载下面的依赖:

  1. $ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \
  2. g++-arm-linux-gnueabihf

类似地,对于 arm64 平台,请安装下列内容:

  1. $ sudo apt-get install libc6-dev-arm64-cross linux-libc-dev-arm64-cross \
  2. g++-aarch64-linux-gnu

并为 armia32 目标交叉编译 您应该将 target_cpu 参数传递给 gn gen:

  1. $ gn gen out/Testing --args='import(...) target_cpu="arm"'

构建

参照Build Instructions: GN

故障排查

加载共享库时出现错误: libtinfo.so.5

Prebuilt clang will try to link to libtinfo.so.5. Depending on the host architecture, symlink to appropriate libncurses:

  1. $ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5

高级提示

The default building configuration is targeted for major desktop Linux distributions. To build for a specific distribution or device, the following information may help you.

使用系统提供的 clang 替换下载的 clang 二进制文件

默认情况下, Electron 是由 Chromium 项目提供的预生成的 clang 二进制文件构建的。 如果出于某些原因你想用你系统已安装的 clang来构建,你可以在GN的参数中指定clang_base_path

例如如果你的 clang安装在 /usr/local/bin/clang下:

  1. $ gn gen out/Testing --args='import("//electron/build/args/testing.gn") clang_base_path = "/usr/local/bin"'

使用 clang 之外的其它编译器

Electron 不支持除 clang之外的其他编译器构建