glibc 找不到符号错误
symbol not found errors with glibc
最近,我开始使用 Docker 到 运行 我的 Node 项目,并想添加 Oracle 即时客户端驱动程序。据我所知,Oracle 即时客户端驱动程序是针对 glibc
库编译的,而我的基于 Alpine
的 Docker 图像包括 musl
库。
所以我需要一种方法来包含 glibc
库,我偶然发现 docker-glibc-builder 将 glibc
库打包为压缩包。
将 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)
有人 运行 遇到这样的错误吗?
So I needed a way to include the glibc libraries
请注意,您可以不能在单个进程中混合和匹配两个单独的 libc
库。您必须选择其中之一。此外,您 必须 针对您将在运行时使用的同一个库进行构建(仅在 Docker 图像中包含运行时包是不够的)。
According to musl wiki,musl不提供getcontext
。您得到的错误与您继续使用 musl 而不是 glibc 一致。
最近,我开始使用 Docker 到 运行 我的 Node 项目,并想添加 Oracle 即时客户端驱动程序。据我所知,Oracle 即时客户端驱动程序是针对 glibc
库编译的,而我的基于 Alpine
的 Docker 图像包括 musl
库。
所以我需要一种方法来包含 glibc
库,我偶然发现 docker-glibc-builder 将 glibc
库打包为压缩包。
将 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)
有人 运行 遇到这样的错误吗?
So I needed a way to include the glibc libraries
请注意,您可以不能在单个进程中混合和匹配两个单独的 libc
库。您必须选择其中之一。此外,您 必须 针对您将在运行时使用的同一个库进行构建(仅在 Docker 图像中包含运行时包是不够的)。
According to musl wiki,musl不提供getcontext
。您得到的错误与您继续使用 musl 而不是 glibc 一致。