glibc找不到符号

最近,我开始使用Docker来运行我的Node项目,并希望添加Oracle即时客户端驱动程序。 据我所知,Oracle即时客户端驱动程序是针对glibc库编译的,而基于Alpine的Docker映像包含musl库。

所以我需要一种方法来包含glibc库,我偶然发现了将glibc库打包为压缩包的docker-glibc-builder 。

glibc库包含到容器中之后,我开始注意到以下错误,当我的Node项目调用Oracle即时驱动程序时。

 Error: Error relocating /opt/oracle/drivers/instantclient/libclntsh.so.11.1: getcontext: symbol not found at Error (native) at Object.Module._extensions..node (module.js:568:18) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Module.require (module.js:468:17) at require (internal/module.js:20:19) at Object.<anonymous> (node_modules/oracledb/lib/oracledb.js:32:19) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Module.require (module.js:468:17) at require (internal/module.js:20:19) at Object.<anonymous> (node_modules/oracledb/index.js:1:80) 

任何人遇到这样的错误?

所以我需要一个包含glibc库的方法

请注意,您不能在一个进程中混合和匹配两个单独的libc库。 你必须select一个或另一个。 此外,您必须针对您将在运行时使用的相同库进行构build(仅包括Docker镜像中的运行时软件包是不够的)。

根据musl维基 ,musl不提供getcontext 。 你得到的错误与你继续使用musl一致,而不是glibc。