En mi laptop
$ cat /etc/issue
Ubuntu 18.04 LTS \n \l
Hay dos carpetas diferentes para bibliotecas x86y x86_64:
~$ ls -1 /
bin
lib
lib64
sbin
...
¿Por qué para binarios existe un solo directorio?
PD: También estoy interesado en Android, pero espero que la respuesta sea la misma.
linux
android
architecture
Gluttton
fuente
fuente

/biny/sbinallí. ¿Cuál es la pregunta? ¿Estás preguntando sobre la diferencia entre/liby/lib64?x86_64(ni para/binno para/sbin)./bin64.wine*32ywine*64).Respuestas:
Primero, por qué hay por separado
/liby/lib64:El estándar de jerarquía del sistema de archivos menciona que se separan
/liby/lib64existen porque:En mi Slackware 14.2, por ejemplo, existen
/liby/lib64directorios de bibliotecas de 32 bits y 64 bits, respectivamente, a pesar de que/libno es como un enlace simbólico como los FHS snippet sugeriría:Hay dos
libc.so.6bibliotecas en/liby/lib64.Cada binario ELF construido dinámicamente contiene una ruta codificada al intérprete, en este caso,
/lib/ld-linux.so.2o/lib64/ld-linux-x86-64.so.2:El trabajo del intérprete es cargar las bibliotecas compartidas necesarias. Puede preguntarle a un intérprete de GNU qué bibliotecas cargaría sin siquiera ejecutar un binario usando
LD_TRACE_LOADED_OBJECTS=1o unlddcontenedor:Como puede ver, un intérprete determinado sabe exactamente dónde buscar bibliotecas: la versión de 32 bits busca bibliotecas
/liby la versión de 64 bits busca bibliotecas/lib64.El estándar FHS dice lo siguiente sobre
/bin:OMI la razón por la cual no existen por separado
/biny/bin64es que si tuviéramos el archivo con el mismo nombre en ambos directorios que no podíamos llamar a uno de ellos indirectamente, porque tendríamos que poner/bino/bin64por primera vez en$PATH.Sin embargo, tenga en cuenta que lo anterior es solo la convención: al kernel de Linux realmente no le importa si tiene separado
/biny/bin64. Si los desea, puede crearlos y configurar su sistema en consecuencia.También mencionó Android: tenga en cuenta que, excepto para ejecutar un kernel de Linux modificado, no tiene nada que ver con sistemas GNU como Ubuntu: sin glibc, sin bash (de forma predeterminada, por supuesto, puede compilarlo e implementarlo manualmente), y también la estructura de directorios Es completamente diferente.
fuente
ls -lejemplos no son particularmente relevantes. Lo que sería útil es la salida dels -l /lib /lib64, que probablemente muestra que/libsí mismo es un enlace simbólico.ls -ld, y no,/libno es un enlace simbólico en miSlackware 14.2sistema.dfd029d25c58831bc5db671aec99a36f /lib64/libc.so.6,987e7b736f316cc8da87ca2f38dae93e /lib/libc.so.6.La razón es que los directorios lib / lib64 pueden contener archivos que tienen el mismo nombre porque son bibliotecas compartidas con diversos programas. Ponerlos en directorios separados resuelve el conflicto. No hay (por lo general ...) una buena razón para distribuir ejecutables con el mismo nombre en el mismo sistema que son de 32/64 bits, pero dado que puede haber una mezcla de ejecutables, se deben proporcionar las bibliotecas compartidas.
fuente