Study & Project ✏️/electron 🐣

[Electron] Electron cross compile to Linux on Windows (feat. electron-forge, WSL) 윈도우에서 리눅스로 일렉트론 크로스컴파일 하는 방법

JM 2023. 4. 27. 00:27
반응형

정말 애정하고 있고, 미래에도 가치 있게 쓰일 라이브러리? 스택? 인 electron을 다시 손보게 됐다.

 

기존에 만들었던 프로그램의 업데이트 및 업그레이드를 위해서 electron 문서를 다시 정독해 보면서 Windows -> Linux로 크로스 컴파일링을 시도하는 삽질과 스토리를 써 내려가겠다.

 

https://www.electronjs.org/docs/latest/

 

Introduction | Electron

Welcome to the Electron documentation! If this is your first time developing an Electron app, read through this Getting Started section to get familiar with the basics. Otherwise, feel free to explore our guides and API documentation!

www.electronjs.org

 


1. electron-forge설치

electron에서 컴파일링 및 패키징을 지원하는 라이브러리는 많지만 공식 홈페이지에서 추천하는 라이브러리는 electron-forge다

그러므로 해당 코드를 실행해 보자

npm install --save-dev @electron-forge/cli
npx electron-forge import

그러면 package.json에 해당 코드들이 생성되면서 make 할 준비가 된 것이다.

// package.json

  //...
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
  //...

하지만 우리의 목표는 Windows -> Linux 크로스 컴파일이므로 다음 챕터를 향해 나아가보자.

 

Make 도중에 node-gyp관련 오류가 생길 경우 해당 글을 참조

https://it-jm.tistory.com/182

 

[node-gyp rebuild]Error: node-gyp failed to rebuild 에러 분석 및 해결 방법 (feat. electron-forge)

기존 프로젝트를 쳐내고 오랜만에 다시 electron을 건들던 중... 과거엔 electron-builder를 이용해서 패키징과 컴파일링을 진행했는데, 이번에 공식 홈페이지에 가보니 electron-forge가 메인 빌더라고 적

it-jm.tistory.com

 


2. WSL 설치

마소의 공식 document를 보면 WSL 설치 관련해서 자세하게 설명이 되어 있다.

https://learn.microsoft.com/ko-kr/windows/wsl/install

 

WSL 설치

wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니

learn.microsoft.com

 

추가적으로 만약 powershell이 맘에 안 들 경우

제어판의 -> 프로그램 -> Windows 기능 켜기/끄기 에서 Hyper-V 관련 사항들을 체크표시 해주면 된다.

재부팅 ㄱㄱ

여담이지만 Docker설정과 유사하다.

 


3. Microsoft Store에서 Ubuntu 설치

-> 윈도우 버튼을 누른 뒤 microsoft Store를 검색

-> Ubuntu 검색 후 설치

 


4. Ubuntu 실행

실행을 하면 아이디와 패스워드를 입력하고 기존 linux커널이 실행되듯이 사용할 수 있다.

 

이제 WSL에서 컴파일을 위한 작업을 진행해 보자

작업의 순서에 맞는 명령어들을 차례대로 나열하니 잘 보고 에러가 난다면 아래 에러모음집에서 보고 다시 해보길 바란다

sudo apt-get update
sudo apt-get upgrade

// nvm install
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
// nvm activate
source ~/.bashrc
// nvm version check
nvm -v

// node v16.10.0 install
nvm install 16.10.0

// open Linux directory on Windows
explorer.exe .

// 작업할 파일을 윈도우 -> 리눅스 폴더로 복붙

// install dpkg, fakeroot
sudo apt-get install dpkg fakeroot
// install rpm
sudo apt-get install rpm -y
// install cpp
sudo apt-get install build-essential

// run make
npm run make

여기서부터 엄청난 오류들이 있는데 각각 해당하는 오류가 있는지 보고 체크하길 바란다.

 

Error: Cannot make for deb, the following external binaries need to be installed: dpkg, fakeroot

Error: Cannot make for rpm, the following external binaries need to be installed: rpmbuild

Error: node-gyp failed to rebuild ~

Error Code

fakeroot, while creating message channels: Function not implemented
fakeroot: error while starting the `faked' daemon.

해당 에러는 여기서 참조 바란다

https://it-jm.tistory.com/184

 

[Error]fakeroot, while creating message channels: Function not implemented 해결 방법

electron에서 fakeroot를 이용한 컴파일링 도중에 해당 오류가 나왔다. fakeroot, while creating message channels: Function not implemented fakeroot: error while starting the `faked' daemon. 해당 오류본은 캡처가 안되어 있지만

it-jm.tistory.com


5. 결과

결과적으로는 electron-forge가 잘 작동하면서

out폴더 아래에 크로스컴파일 아닌 크로스컴파일 결과물이 잘 나와있다!!!

 


앞으로 더 많은 기능과 활용을 할 수 있을 것 같다.

ex) electron을 활용한 미니보드 제어, 데스크톱 앱을 이용한 마이크로 서비스 등등

 

더 완성도 높은 서비스가 아닌 더 다양하고 도전적인 서비스를 만들고 싶다.

 

이 글을 보는 모두에게 행운이 가득하길