首页 > 解决方案 > Lampp无法加载共享库

问题描述

我在 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 目录中,但仍然出现错误。到目前为止,我已经用尽了我的选择。我该如何解决这个问题?

标签: c++linuxxampp

解决方案


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

export LD_ASSUME_KERNEL=2.2.5

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

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


推荐阅读