Perché il comando file dice che i binari ELF sono per Linux 2.6.9?


18

Ogni volta che eseguo un file su un binario ELF ottengo questo output:

[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

Mi sto solo chiedendo cosa è cambiato in Linux 2.6.9 che questo binario non poteva funzionare su 2.6.8? Il supporto ELF non è stato aggiunto in Linux 2.0?

Risposte:


23

glibcha un'opzione di configurazione chiamata --enable-kernelche consente di specificare la versione minima supportata del kernel. Quando i file oggetto sono collegati con quella build di glibc, il linker aggiunge una sezione SHT_NOTE all'eseguibile risultante chiamato .note.ABI-tagche include quella versione minima del kernel. Il formato esatto è definito nell'LSB e filesa cercare quella sezione e come interpretarla.

Il motivo per cui il tuo particolare glibc è stato creato per richiedere 2.6.9 dipende da chi lo ha creato. È lo stesso sul mio sistema (Gentoo); un commento nell'ebuild di glibc dice che specifica 2.6.9 perché è il minimo richiesto per l' NPTL , quindi è probabilmente una scelta comune. Un altro che sembra emergere è 2.4.1, poiché era il minimo richiesto per LinuxThreads , il pacchetto utilizzato prima di NPTL


Guadagni miglioramenti delle prestazioni aumentando la versione minima del kernel richiesta? Quali sono i vantaggi nel farlo?
Aaron Franke,

Qui (Fedora 31, x86_64) /lib/libc-2.30.so richiede il kernel 3.20 (l'attuale versione del kernel è 5.3.12-300)
vonbrand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.