이슈
user@raspberrypi:~ $ ./Test-0.0.1-arm64.AppImage
Failed to load addon at /tmp/.mount_TestMx3ZnYyp/resources/app.asar/node_modules/zeromq/build/linux/arm64/node/127/addon.node: Error: libc.musl-aarch64.so.1: 동적 오브젝트 파일을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다
Error: libc.musl-aarch64.so.1: 동적 오브젝트 파일을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다
at process.func [as dlopen] (node:electron/js2c/node_init:2:2559)
at Module._extensions..node (node:internal/modules/cjs/loader:1602:18)
at Object.func [as .node] (node:electron/js2c/node_init:2:2786)
at Module.load (node:internal/modules/cjs/loader:1295:32)
at Module._load (node:internal/modules/cjs/loader:1111:12)
at c._load (node:electron/js2c/node_init:2:16955)
at Module.require (node:internal/modules/cjs/loader:1318:19)
at require (node:internal/modules/helpers:179:18)
at findAddon (/tmp/.mount_TestMx3ZnYyp/resources/app.asar/node_modules/zeromq/lib/load-addon.js:29:25)
at Object.<anonymous> (/tmp/.mount_TestMx3ZnYyp/resources/app.asar/node_modules/zeromq/lib/load-addon.js:50:15)
Trying others...
환경
- 라즈베리파이 5 / 라즈비안 OS 64Bit
Electron Framework Major version 업데이트와 ZeroMQ 라이브러리 업데이트 이후 발생한 에러이다.
기존에 ZeroMQ의 경우 addon.node 파일을 Node.JS ABI 버전 108번과 127번만 만들어놓다 보니, Node.JS 20과 21인 115와 224의 경우에는 addon.node 파일을 찾지 못한 에러덕에 직접 빌드하여 넣어줘야 하는 이슈가 있었는데, 이번 업데이트 이후 115를 아예 보지 못하고 127만 찾게끔 코드가 수정된 듯하다.
115 만들었는데, 왜 115 안 보고 127로 건너뛰게 하냐....
뭐 그건 좋다. 127 하위로는 다 호환될 테니까..
근데 문제는 위와 같은 이슈가 발생한다.
우선 Electron 은 33 -> 34 버전업을 해도 ABI는 변경되지 않았다. Node.js 20을 기준으로 사용하고 있기 때문이다.
그럼 Electron은 범인이 아니다.

또!! 또!!! ZeroMQ 가 문제다.
해결방안을 공유한다. 관련 정보도 없고 검색해도 나오는것도 없어 직접 이것저것 시도하여 해결했다.
시도
- musl 설치 (musl은 경량화된 C라이브러리임. glibc 같은 애라고 생각하면 됨.)
sudo apt install musl
- 실행
Failed to load addon at /tmp/.mount_TestMxbQcKsJ/resources/app.asar/node_modules/zeromq/build/linux/arm64/node/127/addon.node: Error: /tmp/.mount_MabaMxbQcKsJ/resources/app.asar.unpacked/node_modules/zeromq/build/linux/arm64/node/127/addon.node: undefined symbol: __cxa_call_terminate
Error: /tmp/.mount_TestMxbQcKsJ/resources/app.asar.unpacked/node_modules/zeromq/build/linux/arm64/node/127/addon.node: undefined symbol: __cxa_call_terminate
at process.func [as dlopen] (node:electron/js2c/node_init:2:2559)
at Module._extensions..node (node:internal/modules/cjs/loader:1602:18)
at Object.func [as .node] (node:electron/js2c/node_init:2:2786)
at Module.load (node:internal/modules/cjs/loader:1295:32)
at Module._load (node:internal/modules/cjs/loader:1111:12)
at c._load (node:electron/js2c/node_init:2:16955)
at Module.require (node:internal/modules/cjs/loader:1318:19)
at require (node:internal/modules/helpers:179:18)
at findAddon (/tmp/.mount_TestMxbQcKsJ/resources/app.asar/node_modules/zeromq/lib/load-addon.js:29:25)
at Object.<anonymous> (/tmp/.mount_TestMxbQcKsJ/resources/app.asar/node_modules/zeromq/lib/load-addon.js:50:15)
Trying others...
다른 에러를 보여준다.
애초 musl은 lxc나 알파인리눅스 같은 곳에서 사용하는 건데, 내 경우 debian 기반이다 보니 glibc랑 충돌 난 건가 싶으면서도
undefined symbol로 뜨는 걸로 보아 아마 addon.node 파일 자체가 문제일 가능성이 있어보인다.
musl 기반에서 컴파일 된거고 나는 glibc 기반에서 실행하는거라 안되는건가? 심증만 있을 뿐.
시간상 그냥.. 새로 빌드하기로 결심했다.
처음엔 vcpkg 가 문제인 줄 알고 별도로 받고 별짓을 다했다.
cd ~
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
위 방법은 절대 따라 하면 안 된다.
글 안 읽고 위 코드부터 복사해서 사용한 사람들이 있진 않겠지?
해결
이전에 작성한 게시글(하단 링크 포함)을 통해 현재 시스템 환경에서 빌드 한 애드온 노드 파일을 적용하면 해결 된다.
다만 아래 진행하기 전에 하나 해야 할 게 있는데, 바로 /node_modules/zeromq/build/linux/arm64/node/127을 지워줘야 한다.
이게 가장 큰 핵심이다.
전 문단에서 얘기한 것 처럼 이번엔 127 애드온 노드가 추가된 듯하다.
근데 하필 glibc를 사용한 바이너리가 아니라 다른 표준라이브러리를 써서 그런지 musl을 찾고 있기 때문이다.
https://god-logger.tistory.com/158
ZeroMQ + Electron Framework 앱 실행 불가 이슈
배경회사 개발 업무 중 ZeroMQ 를 무조건 사용해야하는 상황이 생겼다.협력사들이 다 이걸 쓰고 있다고 하니 맞춰야하는 상황이다. 대충보니 ZeroMQ는 아주 간단한 메세지 통신에 사용하기에 좋
god-logger.tistory.com

같은 라즈베리파이 5 환경인 사람들을 위해 ABI 115버전과 127버전의 애드온 노드 파일을 공유한다.
다운로드
라즈베리파이용 addon.node 파일 (115,127) 포함 및 설정
참고
Node.js 버전 ABI 버전
- Node.js 18 : 108
- Node.js 20 : 115
- Node.js 21 : 124
- Node.js 22 : 127
'자바스크립트 > Electron Framework' 카테고리의 다른 글
ZeroMQ + Electron Framework 앱 실행 불가 이슈 (0) | 2024.11.08 |
---|---|
Electron Builder 로 빌드 시 cannot be closed. Please close it manually and click ret (4) | 2024.10.10 |
Electron Framework + ESM + TypeScript 환경 세팅 (0) | 2024.01.31 |
[Window] Electron Builder 실행시 cannot create symbolic link 이슈 (4) | 2024.01.31 |
이슈
user@raspberrypi:~ $ ./Test-0.0.1-arm64.AppImage
Failed to load addon at /tmp/.mount_TestMx3ZnYyp/resources/app.asar/node_modules/zeromq/build/linux/arm64/node/127/addon.node: Error: libc.musl-aarch64.so.1: 동적 오브젝트 파일을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다
Error: libc.musl-aarch64.so.1: 동적 오브젝트 파일을 열 수 없습니다: 그런 파일이나 디렉터리가 없습니다
at process.func [as dlopen] (node:electron/js2c/node_init:2:2559)
at Module._extensions..node (node:internal/modules/cjs/loader:1602:18)
at Object.func [as .node] (node:electron/js2c/node_init:2:2786)
at Module.load (node:internal/modules/cjs/loader:1295:32)
at Module._load (node:internal/modules/cjs/loader:1111:12)
at c._load (node:electron/js2c/node_init:2:16955)
at Module.require (node:internal/modules/cjs/loader:1318:19)
at require (node:internal/modules/helpers:179:18)
at findAddon (/tmp/.mount_TestMx3ZnYyp/resources/app.asar/node_modules/zeromq/lib/load-addon.js:29:25)
at Object.<anonymous> (/tmp/.mount_TestMx3ZnYyp/resources/app.asar/node_modules/zeromq/lib/load-addon.js:50:15)
Trying others...
환경
- 라즈베리파이 5 / 라즈비안 OS 64Bit
Electron Framework Major version 업데이트와 ZeroMQ 라이브러리 업데이트 이후 발생한 에러이다.
기존에 ZeroMQ의 경우 addon.node 파일을 Node.JS ABI 버전 108번과 127번만 만들어놓다 보니, Node.JS 20과 21인 115와 224의 경우에는 addon.node 파일을 찾지 못한 에러덕에 직접 빌드하여 넣어줘야 하는 이슈가 있었는데, 이번 업데이트 이후 115를 아예 보지 못하고 127만 찾게끔 코드가 수정된 듯하다.
115 만들었는데, 왜 115 안 보고 127로 건너뛰게 하냐....
뭐 그건 좋다. 127 하위로는 다 호환될 테니까..
근데 문제는 위와 같은 이슈가 발생한다.
우선 Electron 은 33 -> 34 버전업을 해도 ABI는 변경되지 않았다. Node.js 20을 기준으로 사용하고 있기 때문이다.
그럼 Electron은 범인이 아니다.

또!! 또!!! ZeroMQ 가 문제다.
해결방안을 공유한다. 관련 정보도 없고 검색해도 나오는것도 없어 직접 이것저것 시도하여 해결했다.
시도
- musl 설치 (musl은 경량화된 C라이브러리임. glibc 같은 애라고 생각하면 됨.)
sudo apt install musl
- 실행
Failed to load addon at /tmp/.mount_TestMxbQcKsJ/resources/app.asar/node_modules/zeromq/build/linux/arm64/node/127/addon.node: Error: /tmp/.mount_MabaMxbQcKsJ/resources/app.asar.unpacked/node_modules/zeromq/build/linux/arm64/node/127/addon.node: undefined symbol: __cxa_call_terminate
Error: /tmp/.mount_TestMxbQcKsJ/resources/app.asar.unpacked/node_modules/zeromq/build/linux/arm64/node/127/addon.node: undefined symbol: __cxa_call_terminate
at process.func [as dlopen] (node:electron/js2c/node_init:2:2559)
at Module._extensions..node (node:internal/modules/cjs/loader:1602:18)
at Object.func [as .node] (node:electron/js2c/node_init:2:2786)
at Module.load (node:internal/modules/cjs/loader:1295:32)
at Module._load (node:internal/modules/cjs/loader:1111:12)
at c._load (node:electron/js2c/node_init:2:16955)
at Module.require (node:internal/modules/cjs/loader:1318:19)
at require (node:internal/modules/helpers:179:18)
at findAddon (/tmp/.mount_TestMxbQcKsJ/resources/app.asar/node_modules/zeromq/lib/load-addon.js:29:25)
at Object.<anonymous> (/tmp/.mount_TestMxbQcKsJ/resources/app.asar/node_modules/zeromq/lib/load-addon.js:50:15)
Trying others...
다른 에러를 보여준다.
애초 musl은 lxc나 알파인리눅스 같은 곳에서 사용하는 건데, 내 경우 debian 기반이다 보니 glibc랑 충돌 난 건가 싶으면서도
undefined symbol로 뜨는 걸로 보아 아마 addon.node 파일 자체가 문제일 가능성이 있어보인다.
musl 기반에서 컴파일 된거고 나는 glibc 기반에서 실행하는거라 안되는건가? 심증만 있을 뿐.
시간상 그냥.. 새로 빌드하기로 결심했다.
처음엔 vcpkg 가 문제인 줄 알고 별도로 받고 별짓을 다했다.
cd ~
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
위 방법은 절대 따라 하면 안 된다.
글 안 읽고 위 코드부터 복사해서 사용한 사람들이 있진 않겠지?
해결
이전에 작성한 게시글(하단 링크 포함)을 통해 현재 시스템 환경에서 빌드 한 애드온 노드 파일을 적용하면 해결 된다.
다만 아래 진행하기 전에 하나 해야 할 게 있는데, 바로 /node_modules/zeromq/build/linux/arm64/node/127을 지워줘야 한다.
이게 가장 큰 핵심이다.
전 문단에서 얘기한 것 처럼 이번엔 127 애드온 노드가 추가된 듯하다.
근데 하필 glibc를 사용한 바이너리가 아니라 다른 표준라이브러리를 써서 그런지 musl을 찾고 있기 때문이다.
https://god-logger.tistory.com/158
ZeroMQ + Electron Framework 앱 실행 불가 이슈
배경회사 개발 업무 중 ZeroMQ 를 무조건 사용해야하는 상황이 생겼다.협력사들이 다 이걸 쓰고 있다고 하니 맞춰야하는 상황이다. 대충보니 ZeroMQ는 아주 간단한 메세지 통신에 사용하기에 좋
god-logger.tistory.com

같은 라즈베리파이 5 환경인 사람들을 위해 ABI 115버전과 127버전의 애드온 노드 파일을 공유한다.
다운로드
라즈베리파이용 addon.node 파일 (115,127) 포함 및 설정
참고
Node.js 버전 ABI 버전
- Node.js 18 : 108
- Node.js 20 : 115
- Node.js 21 : 124
- Node.js 22 : 127
'자바스크립트 > Electron Framework' 카테고리의 다른 글
ZeroMQ + Electron Framework 앱 실행 불가 이슈 (0) | 2024.11.08 |
---|---|
Electron Builder 로 빌드 시 cannot be closed. Please close it manually and click ret (4) | 2024.10.10 |
Electron Framework + ESM + TypeScript 환경 세팅 (0) | 2024.01.31 |
[Window] Electron Builder 실행시 cannot create symbolic link 이슈 (4) | 2024.01.31 |