“未找到版本‘GLIBCXX_3.4.30’”,但在 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 中找到

问题描述 投票:0回答:1
    $ 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 驱动程序加载共享库缺少什么,或者如何进一步调试它?

docker jdbc libstdc++
1个回答
0
投票

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 没有关系。请参阅此答案

© www.soinside.com 2019 - 2024. All rights reserved.