falta biblioteca compartida en ldd

He comstackdo Apache httpd en CentOS 6.x. Funciona bien allí.

Entonces moví los files binarys a CentOS 7. Necesité instalar algunas bibliotecas que faltan y ahora trabaja muy bien allí.

Entonces moví los files binarys a Archlinux. Como esperaba, no comenzó directamente:

httpd: symbol lookup error: /software_pack/httpd-2.2.25/lib/libapr-1.so.0: undefined symbol: dlopen 

Sin embargo, si hago ldd /software_pack/httpd-2.2.25/lib/libapr-1.so.0 da resultados diferentes en CentOS y Archlinux. En Archlinux, libdl.so no se muestra en absoluto?

Donde desde CentOS sabe que el file necesita libdl.so.2?

CentOS 6.x:

 # ls -la /software_pack/httpd-2.2.25/lib/libaprutil-1.so.0 lrwxrwxrwx 1 root root 21 Jul 30 09:47 /software_pack/httpd-2.2.25/lib/libaprutil-1.so.0 -> libaprutil-1.so.0.5.2 # ldd /software_pack/httpd-2.2.25/lib/libaprutil-1.so.0.5.2 linux-vdso.so.1 => (0x00007fffec400000) libexpat.so.0 => /software_pack/httpd-2.2.25/lib/libexpat.so.0 (0x00007f5ec94d8000) libapr-1.so.0 => /software_pack/httpd-2.2.25/lib/libapr-1.so.0 (0x00007f5ec92a8000) librt.so.1 => /lib64/librt.so.1 (0x00007f5ec9098000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f5ec8e60000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5ec8c40000) libc.so.6 => /lib64/libc.so.6 (0x00007f5ec88a8000) /lib64/ld-linux-x86-64.so.2 (0x00007f5ec9928000) libfreebl3.so => /lib64/libfreebl3.so (0x00007f5ec8630000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f5ec8428000) <<<<<<<< Missing in arch 

En Archlinux:

 # ls -la /software_pack/httpd-2.2.25/lib/libaprutil-1.so.0 lrwxrwxrwx 1 root root 21 Jul 30 10:47 /software_pack/httpd-2.2.25/lib/libaprutil-1.so.0 -> libaprutil-1.so.0.5.2 # ldd /software_pack/httpd-2.2.25/lib/libaprutil-1.so.0.5.2 linux-vdso.so.1 (0x00007fff7cdd3000) libexpat.so.0 => /software_pack/httpd-2.2.25/lib/libexpat.so.0 (0x00007f5aef4e7000) libapr-1.so.0 => /software_pack/httpd-2.2.25/lib/libapr-1.so.0 (0x00007f5aef2ba000) librt.so.1 => /usr/lib/librt.so.1 (0x00007f5aef084000) libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0x00007f5aeee4b000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f5aeec2d000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f5aee87f000) /usr/lib64/ld-linux-x86-64.so.2 (0x00007f5aef934000) 

One Solution collect form web for “falta biblioteca compartida en ldd”

dlopen es normalmente proporcionado por libdl.so.2 . En Arch Linux libdl.so.2 es proporcionado por el package glibc . Sería muy extraño si no hubiera instalado glibc , pero de todos modos, compruebe si tiene libdl.so.2 en su sistema.

También puede utilizar el command readelf para enviar una tabla de símbolos para un object compartido y comprobar si se exporta un símbolo concreto:

 readelf -Ws /usr/lib/libdl.so.2 

Alguna información sobre por ldd salida de ldd para el mismo binary puede diferir en sistemas diferentes se puede encontrar aquí:

https://stackoverflow.com/questions/12714219/ldd-different-output-same-binary-different-distros

El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.