Linux 同一个httpd文件如何具有不同的库依赖关系?(libexpat.so.0)

Linux 同一个httpd文件如何具有不同的库依赖关系?(libexpat.so.0),linux,apache,Linux,Apache,它是从httpd开始的,而不是在我的一台机器上启动: $ /usr/sbin/httpd -v /usr/sbin/httpd: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory 有两台机器的配置几乎相同。Centos 6.6 32位。两个httpd二进制文件具有相同的大小和相同的md5和 但是,库依赖项是不同的。我认为这些

它是从httpd开始的,而不是在我的一台机器上启动:

$ /usr/sbin/httpd -v
/usr/sbin/httpd: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory
有两台机器的配置几乎相同。Centos 6.6 32位。两个httpd二进制文件具有相同的大小和相同的md5和

但是,库依赖项是不同的。我认为这些依赖项在链接时嵌入到二进制文件中。那么,依赖关系如何不同呢

下面请注意,损坏的httpd有两个额外的依赖项,libexpat.so.0(未找到)和librt.so.1

工作httpd

# ldd /usr/sbin/httpd
linux-gate.so.1 =>  (0xb773b000)
libm.so.6 => /lib/libm.so.6 (0xb769c000)
libpcre.so.0 => /lib/libpcre.so.0 (0xb766c000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb764d000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0xb762a000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb75f9000)
libexpat.so.1 => /lib/libexpat.so.1 (0xb75d1000)
libdb-4.7.so => /lib/libdb-4.7.so (0xb745b000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0xb742d000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7412000)
libc.so.6 => /lib/libc.so.6 (0xb727b000)
/lib/ld-linux.so.2 (0x49e18000)
libdl.so.2 => /lib/libdl.so.2 (0xb7275000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb7270000)
libfreebl3.so => /lib/libfreebl3.so (0xb726c000)
$ ldd /usr/sbin/httpd
linux-gate.so.1 =>  (0xb7721000)
libm.so.6 => /lib/libm.so.6 (0xb7686000)
libpcre.so.0 => /lib/libpcre.so.0 (0xb7656000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7637000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0xb761d000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb75ec000)
libexpat.so.1 => /lib/libexpat.so.1 (0xb75c4000)
libdb-4.7.so => /lib/libdb-4.7.so (0xb744e000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0xb7429000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb740e000)
libc.so.6 => /lib/libc.so.6 (0xb7277000)
/lib/ld-linux.so.2 (0x00871000)
libdl.so.2 => /lib/libdl.so.2 (0xb7271000)
libexpat.so.0 => not found
libuuid.so.1 => /lib/libuuid.so.1 (0xb726c000)
librt.so.1 => /lib/librt.so.1 (0xb7263000)
libfreebl3.so => /lib/libfreebl3.so (0xb725f000)
损坏的httpd

# ldd /usr/sbin/httpd
linux-gate.so.1 =>  (0xb773b000)
libm.so.6 => /lib/libm.so.6 (0xb769c000)
libpcre.so.0 => /lib/libpcre.so.0 (0xb766c000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb764d000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0xb762a000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb75f9000)
libexpat.so.1 => /lib/libexpat.so.1 (0xb75d1000)
libdb-4.7.so => /lib/libdb-4.7.so (0xb745b000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0xb742d000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7412000)
libc.so.6 => /lib/libc.so.6 (0xb727b000)
/lib/ld-linux.so.2 (0x49e18000)
libdl.so.2 => /lib/libdl.so.2 (0xb7275000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb7270000)
libfreebl3.so => /lib/libfreebl3.so (0xb726c000)
$ ldd /usr/sbin/httpd
linux-gate.so.1 =>  (0xb7721000)
libm.so.6 => /lib/libm.so.6 (0xb7686000)
libpcre.so.0 => /lib/libpcre.so.0 (0xb7656000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7637000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0xb761d000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb75ec000)
libexpat.so.1 => /lib/libexpat.so.1 (0xb75c4000)
libdb-4.7.so => /lib/libdb-4.7.so (0xb744e000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0xb7429000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb740e000)
libc.so.6 => /lib/libc.so.6 (0xb7277000)
/lib/ld-linux.so.2 (0x00871000)
libdl.so.2 => /lib/libdl.so.2 (0xb7271000)
libexpat.so.0 => not found
libuuid.so.1 => /lib/libuuid.so.1 (0xb726c000)
librt.so.1 => /lib/librt.so.1 (0xb7263000)
libfreebl3.so => /lib/libfreebl3.so (0xb725f000)

如果二进制文件是相同的,但是
ldd
显示不同的依赖项,那么它一定与需要不同库的早期依赖项有关。事实上,输出结果表明,不同系统的库的大小不同。也许您可以通过更新一个或两个系统使系统库完全相同? -沃利克


我从另一台机器复制了所有引用的LIB,现在它可以工作了Danny

如果二进制文件是相同的,但是
ldd
显示不同的依赖关系,那么它一定与需要不同库的早期依赖关系有关。事实上,输出结果表明,不同系统的库的大小不同。也许您可以通过更新一个或两个系统使系统库完全相同? -沃利克


我从另一台机器复制了所有引用的LIB,现在它可以工作了Danny

如果二进制文件是相同的,但是
ldd
显示不同的依赖关系,那么它一定与需要不同库的早期依赖关系有关。事实上,输出结果表明,不同系统的库的大小不同。也许你可以通过更新一个或两个系统使系统库完全相同?我从另一台机器复制了所有引用的lib,现在它可以工作了。谢谢还是不确定它是怎么变成那样的。。。下一步。如果二进制文件是相同的,但是
ldd
显示不同的依赖关系,那么它一定与需要不同库的早期依赖关系有关。事实上,输出结果表明,不同系统的库的大小不同。也许你可以通过更新一个或两个系统使系统库完全相同?我从另一台机器复制了所有引用的lib,现在它可以工作了。谢谢还是不确定它是怎么变成那样的。。。下一步。