You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron包重建时出现bits/c++config.h缺失错误求助

Electron跨平台打包编译报错:bits/c++config.h文件缺失

问题场景

在Kali Linux环境下执行node build.js打包Win32 ia32平台Electron应用(使用Electron v7.3.3)时,触发编译错误,核心报错为找不到bits/c++config.h文件。此前为解决openssl_fips未定义问题已将Node.js降级至v16.16.0,且已尝试安装gcc-multilib、更新依赖版本、移除配置中的-m32标志,但均未解决问题。

完整报错信息

┌──(kali♥kali)-[~/Desktop/.../NodeJs/Terminal]  10:51 
└─$ node build.js                                                      
Packaging app for platform win32 ia32 using electron v7.3.3
Well, sometimes you are not so lucky: gyp info it worked if it ends with ok
gyp info using node-gyp@6.1.0
gyp info using node@16.16.0 | linux | x64
gyp info find Python using Python version 3.10.4 found at "/usr/bin/python3"
(node:136591) [DEP0150] DeprecationWarning: Setting process.config is deprecated. In the future the property will be read-only.
(Use `node --trace-deprecation ...` to show where the warning was created)
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args   '/home/kali/Desktop/.../NodeJs/Terminal/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/tmp/electron-packager/win32-ia32/Bridge-win32-ia32/resources/app/node_modules/@serialport/bindings-cpp/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/kali/Desktop/.../NodeJs/Terminal/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/kali/.electron-gyp/7.3.3/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/kali/.electron-gyp/7.3.3',
gyp info spawn args   '-Dnode_gyp_dir=/home/kali/Desktop/.../NodeJs/Terminal/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/kali/.electron-gyp/7.3.3/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/tmp/electron-packager/win32-ia32/Bridge-win32-ia32/resources/app/node_modules/@serialport/bindings-cpp',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/tmp/electron-packager/win32-ia32/Bridge-win32-ia32/resources/app/node_modules/@serialport/bindings-cpp/build'
  CXX(target) Release/obj.target/bindings/src/serialport.o
In file included from /usr/include/c++/12/stdlib.h:36,
                 from ../src/./serialport.h:12,
                 from ../src/serialport.cpp:1:
/usr/include/c++/12/cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory
   41 | #include <bits/c++config.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [bindings.target.mk:110: Release/obj.target/bindings/src/serialport.o] Error 1
make: Leaving directory '/tmp/electron-packager/win32-ia32/Bridge-win32-ia32/resources/app/node_modules/@serialport/bindings-cpp/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/kali/Desktop/.../NodeJs/Terminal/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
gyp ERR! System Linux 5.16.0-kali7-amd64
gyp ERR! command "/usr/local/bin/node" "/home/kali/Desktop/.../NodeJs/Terminal/node_modules/.bin/node-gyp" "rebuild" "--target=7.3.3" "--arch=ia32" "--dist-url=https://www.electronjs.org/headers" "--build-from-source"
gyp ERR! cwd /tmp/electron-packager/win32-ia32/Bridge-win32-ia32/resources/app/node_modules/@serialport/bindings-cpp
gyp ERR! node -v v16.16.0
gyp ERR! node-gyp -v v6.1.0
gyp ERR! not ok

当前项目开发依赖

"devDependencies": {
    "electron": "^1.7.5",
    "electron-packager": "^12.2.0",
    "electron-rebuild": "^1.8.2",
    "electron-winstaller": "^2.7.0"
  },

解决方案

1. 安装32位C++标准库开发文件

报错本质是交叉编译Win32 ia32时缺少对应架构的C++标准库头文件,执行以下命令安装:

sudo apt install libstdc++6:i386 libstdc++-12-dev:i386

(注:版本号12对应报错中的gcc版本,若你的gcc版本不同,替换为对应数字)

2. 配置Win32交叉编译工具链

Linux下打包Win32应用需要使用mingw32交叉编译工具,先安装工具链:

sudo apt install mingw-w64

然后设置环境变量指定工具链:

export CC=i686-w64-mingw32-gcc
export CXX=i686-w64-mingw32-g++
export AR=i686-w64-mingw32-ar
export RANLIB=i686-w64-mingw32-ranlib

3. 统一Electron版本

当前项目devDependencies中的Electron版本(^1.7.5)与打包使用的v7.3.3不一致,可能导致编译兼容问题。修改devDependencies:

"devDependencies": {
    "electron": "^7.3.3",
    "electron-packager": "^12.2.0",
    "electron-rebuild": "^1.8.2",
    "electron-winstaller": "^2.7.0"
  },

然后重新安装依赖:

npm install

4. 手动执行electron-rebuild

设置好环境变量后,手动执行重建命令确保依赖编译正确:

npx electron-rebuild --arch=ia32 --target=7.3.3 --dist-url=https://www.electronjs.org/headers

内容的提问来源于stack exchange,提问作者krysto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:27:55