【问题标题】:Apache can't load module because of GLIBCXX_3.4.26由于 GLIBCXX_3.4.26,Apache 无法加载模块
【发布时间】:2021-05-17 12:14:38
【问题描述】:

我正在使用一个 httpd:2.4.46 docker 镜像,其中放置了我自己的 httpd.conf 和一些个人模块。

问题是,当我启动容器时,它可以工作,但 error_log 显示他没有设法加载我的模块。

[2021 年 5 月 17 日星期一 10:00:25.279259] [通知] [pid 12:tid 139994847216768] [mod-1.0.016] 无法加载 /usr/local/apache2/modules/../../。 ./../home/latest/module_gcc10.so.2021.2.1.003:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:找不到版本“GLIBCXX_3.4.26”(/usr/local/ 需要apache2/modules/../../../../home/latest/module_gcc10.so.2021.2.1.003)。

我暂时尝试过这个:GLIBCXX_3.4.20 not found, how to fix this error?,但徒劳无功。 我很确定这与缺少有关 gcc 或 g++ 的内容有关,但我真的不知道该怎么办。

感谢您的帮助。

【问题讨论】:

    标签: docker apache gcc


    【解决方案1】:

    您的模块链接到 libstdc++.so.6 版本 3.4.26(或更高版本)。

    必须在运行时提供libstdc++.so.6 的那个版本(或更新版本),否则您的程序将无法运行。

    • 注意:libstdc++.so.6 是 GCC 的一部分,它与 GLIBC 没有任何关系。
    • 注意:您不需要将完整的 GCC 安装到运行时映像中,您只需要 libstdc++.so.6(可能还需要 libgcc_s.so.1

    【讨论】:

    • 我通过添加以下行将 libstdc++.so.6 的安装包含在我的 Dockerfile 中:RUN apt-get update && apt-get install libstdc++6。重建映像后,它仍然无法正常工作,并且我收到了相同的错误消息。我检查了 /usr/lib/x86_64-linux-gnu ,我实际上可以找到 libstdc++ ...
    • @Samikaze "I included ..." -- 您安装了libstdc++.so.6错误版本(不够新)。你可以看到你的版本用readelf -V /usr/lib/x86_64-linux-gnu/libstdc++.so.6定义了哪些GLIBCXX_...标签。
    • 确实,我在我的 Dockerfile 中以某种方式复制了错误的 libstdc++.so.6。我注意到它比其他 Docker 映像中的小(工作 httpd 服务器但太大),所以我只是确保从 /usr/local/lib64/ 复制 libstdc++。谢谢!
    猜你喜欢
    • 2017-06-06
    • 1970-01-01
    • 2016-08-15
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多