Lampp无法加载共享库

Posted

技术标签:

【中文标题】Lampp无法加载共享库【英文标题】:Shared Library Can't Be Loaded by Lampp 【发布时间】:2021-11-04 05:04:49 【问题描述】:

我在 RHEL 服务器上遇到了一个奇怪的问题。 我正在运行 ./lampp start,试图运行 xampp 服务,但随后出现一堆错误,表明它无法加载共享库:

netstat: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
/opt/lampp/bin/gettext: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/opt/lampp/bin/gettext: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
XAMPP: netstat: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
/bin/sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
/opt/lampp/bin/gettext: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/opt/lampp/bin/gettext: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

我已经检查并且这些库存在于 /usr/lib64

[root@xxxxxuserlib64]# cd /usr/lib64
[root@xxxxxuserlib64]# ls -al |grep libc.so
-rw-r--r--.  1 root root      253 May 19  2020 libc.so
lrwxrwxrwx.  1 root root       12 Sep  3 18:01 libc.so.6 -> libc-2.17.so

我尝试过运行 ldconfig

[root@xxxxxuserlib64]# ldconfig -v | grep libc
ldconfig: Path `/lib' given more than once
ldconfig: Path `/lib64' given more than once
ldconfig: Can't stat /libx32: No such file or directory
ldconfig: Path `/usr/lib' given more than once
ldconfig: Path `/usr/lib64' given more than once
ldconfig: Can't stat /usr/libx32: No such file or directory
        libcommon.so.9.3 -> libcommon.so.9.3.1
        libcryptsetup.so.12 -> libcryptsetup.so.12.3.0
        libcupscgi.so.1 -> libcupscgi.so.1
        libcupsmime.so.1 -> libcupsmime.so.1
        libcupsimage.so.2 -> libcupsimage.so.2
        libcidn.so.1 -> libcidn-2.17.so
        libcupsppdc.so.1 -> libcupsppdc.so.1
        libcups.so.2 -> libcups.so.2
        libcrack.so.2 -> libcrack.so.2.9.0
        libcroco-0.6.so.3 -> libcroco-0.6.so.3.0.1
        libcrypto.so.10 -> libcrypto.so.1.0.2k
        libcpupower.so.0 -> libcpupower.so.0.0.0
        libcairo-script-interpreter.so.2 -> libcairo-script-interpreter.so.2.11512.0
        libcap.so.2 -> libcap.so.2.22
        libcgroup.so.1 -> libcgroup.so.1.0.41
        libcairo.so.2 -> libcairo.so.2.11512.0
        libcollection.so.2 -> libcollection.so.2.1.1
        libc.so.6 -> libc-2.17.so
        libcap-ng.so.0 -> libcap-ng.so.0.0.0
        libcom_err.so.2 -> libcom_err.so.2.1
        libcurl.so.4 -> libcurl.so.4.3.0
        libcrypt.so.1 -> libcrypt-2.17.so
        libcryptsetup.so.4 -> libcryptsetup.so.4.7.0

看起来不错,libc 已加载。

我尝试在 .bashrc 中添加导出 LD_LIBRARY_PATH 变量

[root@xxxxxxuserlib64]# echo $LD_LIBRARY_PATH
/usr/lib:/usr/lib64
[root@xxxxxxuser lib64]#

仍然无济于事,同样的问题。最后,我尝试将 libc 作为 gettext 添加到 sampe 目录中,但仍然出现错误。到目前为止,我已经用尽了我的选择。我该如何解决这个问题?

【问题讨论】:

问题在于 netstat 无法加载库。会不会是 netstat 二进制文件是为 32 位编译的,但您在只安装了 64 位库的系统上运行它? 【参考方案1】:

原来发生错误是因为我将 Red Hat 服务器升级到 RHEL 7.9,而 Lampp 碰巧设置了以下标志:

export LD_ASSUME_KERNEL=2.2.5

3.10.0版本更新后与新内核不兼容。

所以我只是注释掉了这一行。不确定这是否是处理它的正确方法,但至少它可以启动并运行服务。如果有人有更好的方法来处理这种情况,我仍然会提出问题。

【讨论】:

以上是关于Lampp无法加载共享库的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse - 无法加载 JNI 共享库

Java无法加载JNI共享库[重复]

加载共享库时出错,无法打开共享对象文件:没有这样的文件或目录(hiredis)

无法加载共享库'db2app64.dll'

加载共享库时出错:libgmock.so:无法打开共享对象文件:没有这样的文件或目录

无法加载动态库“libcupti.so.11.0”; dlerror: libcupti.so.11.0: 无法打开共享对象文件