关于在 Linux 系统上编译 NodeJS addon,并静态链接 OpenSSL 不可行的原因解析


场景


我们的网络库均是使用 c++ 编写的跨平台代码,然后将其封装成 nodejs addon,以便给 electron 应用程序使用。

为了让我们的程序在不同平台上表现一致,我们决定在所有平台都静态链接 zlibopenssl 库。

Windows 平台和 macOS 平台


这样的方案,在 WindowsmacOS 平台都取得了成功,并没有任何意外的错误。

Linux 平台

但是同样的方案,在 Linux 上却无法正常工作。

在如下平台都无法正常工作:

这里值得一提:

链接到我们自己的 openssl 库的时候,是可以正常编译通过。但是,运行起来之后会崩溃。

通过调试,发现是

SSL_library_init()

崩溃

具体原因未知。

因此,在 linux 平台上,我们不得不使用系统中安装的 openssl 库进行编译。这种方案目前是工作的,没有发现其他意外行为。

分类

Published at:
October 16, 2025
Keywords:
NodeJS
Debug
Linux
c++