$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
GLIBCXX_3.4.30
但是,当在同一个 docker 容器上运行另一个应用程序时:
org.postgresql.util.PSQLException: ERROR: could not load library "/usr/lib/postgresql/13/lib/llvmjit.so": /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libz3.so.4)
llvvjit.so
文件也存在:
# ls /usr/lib/postgresql/13/lib/llvmjit.so
/usr/lib/postgresql/13/lib/llvmjit.so
我正在使用以下 Dockerfile:
FROM alpine
RUN apk upgrade --no-cache
RUN apk add libstdc++ postgresql-client leiningen
WORKDIR /ui-service
COPY . .
CMD ["lein", "ring", "server-headless", "3000"]
EXPOSE 3000
postgresql 驱动程序加载共享库缺少什么,或者如何进一步调试它?
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
GLIBCXX_3.4.30
然而,当在同一个 docker 容器上运行另一个应用程序时:
org.postgresql.util.PSQLException: ERROR: could not load library "/usr/lib/postgresql/13/lib/llvmjit.so": /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libz3.so.4)
请注意,
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
和 /lib/x86_64-linux-gnu/libstdc++.so.6
不相同。
您可能安装了两个版本的
libstdc++.so.6
(这从来都不是一个好主意),其中一个版本比另一个版本旧。
附注使用
string
是查找版本的错误方法。请使用 readelf -V /lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
来代替。
P.P.S。您用
glibc
标签标记了这个问题,但这与 GLIBC 没有关系。请参阅此答案。