Linux 빌드 가이드
Electron 자체를 Linux에서 빌드하여 커스텀 Electron 바이너리를 생성하는 방법에 대한 지침을 아래에서 확인할 수 있다. 사전 빌드된 Electron 바이너리와 함께 앱 코드를 번들링하고 배포하는 방법은 애플리케이션 배포 가이드를 참고한다.
필수 조건
- 최소 25GB 디스크 공간과 8GB RAM이 필요하다.
- Python >= 3.7 버전이 설치되어 있어야 한다.
- Node.js가 설치되어 있어야 한다. Node.js를 설치하는 방법은 다양하다. nodejs.org에서 소스 코드를 다운로드해 직접 컴파일할 수 있다. 이 방법을 사용하면 일반 사용자 계정으로도 홈 디렉터리에 Node를 설치할 수 있다. 또는 NodeSource와 같은 저장소를 이용할 수도 있다.
- clang 3.4 이상 버전이 필요하다.
- GTK 3와 libnotify의 개발 헤더가 설치되어 있어야 한다.
Ubuntu >= 20.04에서는 다음 라이브러리를 설치한다:
$ 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
Ubuntu < 20.04에서는 다음 라이브러리를 설치한다:
$ 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
RHEL / CentOS에서는 다음 라이브러리를 설치한다:
$ 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
Fedora에서는 다음 라이브러리를 설치한다:
$ 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
Arch Linux / Manjaro에서는 다음 라이브러리를 설치한다:
$ 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
다른 배포판에서는 pacman과 같은 패키지 관리자를 통해 비슷한 패키지를 설치할 수 있다. 또는 소스 코드를 직접 컴파일할 수도 있다.
크로스 컴파일
arm
타겟을 빌드하려면 다음 의존성을 추가로 설치해야 한다:
$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \
g++-arm-linux-gnueabihf
마찬가지로 arm64
를 위한 의존성은 다음과 같다:
$ sudo apt-get install libc6-dev-arm64-cross linux-libc-dev-arm64-cross \
g++-aarch64-linux-gnu
arm
또는 다른 타겟을 크로스 컴파일하려면 gn gen
명령어에 target_cpu
파라미터를 전달해야 한다:
$ gn gen out/Testing --args='import(...) target_cpu="arm"'
빌드
GN 빌드 가이드를 참고한다.
문제 해결
공유 라이브러리 로딩 오류: libtinfo.so.5
미리 빌드된 clang
은 libtinfo.so.5
에 링크를 시도한다. 호스트 아키텍처에 따라 적절한 libncurses
로 심볼릭 링크를 생성해야 한다:
$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5
고급 주제
기본 빌드 설정은 주요 데스크톱 Linux 배포판을 대상으로 한다. 특정 배포판이나 장치를 위해 빌드하려면 다음 정보가 도움이 될 수 있다.
시스템에 설치된 clang
을 사용하기
기본적으로 Electron은 Chromium 프로젝트에서 제공하는 미리 빌드된 clang
바이너리를 사용해 빌드된다. 만약 특정 이유로 시스템에 설치된 clang
을 사용하고 싶다면, GN 인자에 clang_base_path
를 지정할 수 있다.
예를 들어, /usr/local/bin/clang
경로에 clang
이 설치되어 있다면 다음과 같이 설정한다:
$ gn gen out/Testing --args='import("//electron/build/args/testing.gn") clang_base_path = "/usr/local/bin"'
clang
이외의 컴파일러 사용
Electron을 clang
이외의 컴파일러로 빌드하는 것은 지원하지 않는다.