¿Por qué el comando de archivo dice que los binarios ELF son para Linux 2.6.9?


18

Cada vez que ejecuto un archivo en un binario ELF obtengo esta salida:

[jonescb@localhost ~]$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for
GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, 
not stripped

¿Me pregunto qué cambió en Linux 2.6.9 que este binario no podría ejecutarse en 2.6.8? ¿No se agregó el soporte ELF en Linux 2.0?

Respuestas:


23

glibctiene una opción de configuración llamada --enable-kernelque le permite especificar la versión mínima admitida del núcleo. Cuando los archivos de objeto están vinculados con esa compilación glibc, el vinculador agrega una sección SHT_NOTE al ejecutable resultante llamado .note.ABI-tagque incluye esa versión mínima del núcleo. El formato exacto se define en el LSB , y filesabe buscar esa sección y cómo interpretarla.

La razón por la cual su glibc en particular fue construido para requerir 2.6.9 depende de quién lo construyó. Es lo mismo en mi sistema (Gentoo); un comentario en glibc ebuild dice que especifica 2.6.9 porque es el mínimo requerido para el NPTL , por lo que es probable que sea una opción común. Otro que parece aparecer es 2.4.1, porque era el mínimo requerido para LinuxThreads , el paquete utilizado antes de NPTL


¿Obtiene mejoras de rendimiento al aumentar la versión mínima requerida del núcleo? ¿Cuáles son los beneficios de hacerlo?
Aaron Franke

Aquí (Fedora 31, x86_64) /lib/libc-2.30.so requiere el kernel 3.20 (la versión actual del kernel es 5.3.12-300)
vonbrand
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.