Aller au contenu principal

Instructions pour compiler Electron (Linux)

Suivez les instructions ci-dessous pour compiler **Electron lui même **, afin d'obtenir une version personnalisée d'Electron. For bundling and distributing your app code with the prebuilt Electron binaries, see the application distribution guide.

Prérequis

  • Au moins 25GB d'espace disque et 8 Go de RAM.
  • Python >= 3.7.
  • Node.js. Il existe différentes façons d’installer Node. Vous pouvez soit télécharger le code source depuis nodejs.org et le compiler vous-même, permettant ansi l’installation de Node sur votre propre répertoire comme un utilisateur standard, ou bien essayer les dépôts tels que NodeSource.
  • clang 3.4 ou plus.
  • En-têtes de développement de GTK+ et libnotify.

Sur Ubuntu >= 20.04, installez les bibliothèques suivantes :

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

Sur Ubuntu < 20.04, installez les bibliothèques suivantes :

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

Sur RHEL / CentOS, installez les bibliothèques suivantes :

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

Sur Fedora, installez les bibliothèques suivantes :

$ sudo dnf install clang dbus-devel gperf gtk3-devel \
libnotify-devel libgnome-keyring-devel libcap-devel \
cups-devel libXtst-devel alsa-lib-devel libXrandr-devel \
nss-devel python-dbusmock

Sur les architectures Linux / Manjaro, installez les bibliothèques suivantes :

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

D'autres distributions peuvent proposer des paquets similaires à installer via des gestionnaires de paquets tels que pacman. Ou on peut compiler à partir du code source.

Multi-compilation

Si vous voulez compiler une version arm, vous devez installer les dépendances suivantes :

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

De même pour arm64, installez ce qui suit :

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

Et pour effectuer une compilation croisée pour les cibles arm ou une autre cible, vous devez passer le paramètre target_cpu avec la valeur gn gen:

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

Compilation

See Build Instructions: GN

Résolution de problème

Erreur lors du chargement Shared Libraries : libtinfo.so.5

clang prebuilt essaiera de créer un lien vers libtinfo.so.5. Selon l'architecture de l'hôte, cela créera un lien symbolique vers le libncurses approprié :

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

Sujets Avancés

La configuration par défaut de la compilation cible les principales distributions Linux de bureau. Les informations suivantes pourront vous aider à compiler pour une distribution ou un périphérique spécifique,.

Utiliser le système clang au lieu des fichiers binaires téléchargés clang

Par défaut, Electron est compilé avec les binaires précompilés de clang fournis par le projet Chromium. Si pour une raison quelconque, vous souhaitez construire avec le clang installé dans votre système, vous pouvez spécifier l'argument clang_base_path dans le GN args.

Par exemple, si vous avez installé clang sous /usr/local/bin/clang :

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

Utiliser un compilateur autre que clang

La construction d'électrons avec des compilateurs autres que clang n'est pas prise en charge.