Quel est le champ de numéro de version dans la sortie de la commande de fichier linux

Si je fais la commande suivante sur mon exécutable appelé “version”, compilé sur Fedora Core 11, j’obtiens cette sortie

version du fichier

version: exécutable LSF 32 bits ELF, Intel 80386, version 1 (SYSV), lié dynamicment (utilise des bibliothèques partagées), pour GNU / Linux 2.6.18 , non dépouillé

Quelle est la signification du numéro 2.6.18 vers la fin, et est-ce utile de distinguer pour les clients la version de certains logiciels qu’ils doivent télécharger?

De ce que j’ai vu jusqu’ici, ce nombre n’est certainement pas

  1. La version du kernel
  2. La version libc
  3. Tout ce qui a trait à lsb_release

Je voudrais avoir un identifiant simple pour permettre aux clients de savoir quelle version binary ils doivent télécharger, ce qu’ils devraient idéalement pouvoir identifier en tapant une commande (comme uname -a, bien que ce ne soit évidemment pas le cas dans ce cas) ).

Merci

C’est la version du kernel de la machine sur laquelle le binary a été compilé . Si vous utilisez des binarys précompilés de votre dissortingbution, c’est la version du kernel d’une machine du fournisseur de dissortingbution, probablement dans sa batterie de compilation.

Il est pertinent, par exemple, lorsque l’on considère les appels système. Supposons que votre fichier binary utilise le syscall no. X et vous utilisez un kernel qui ne prend pas encore en charge X ou pire, syscall non. X à un autre appel système.

L’API utilisateur du kernel Linux vanilla est stable. Cela signifie que chaque appel système disponible dans la version Linux A est disponible dans la version Linux B si A < =B Mais il peut arriver que certains développeurs publient leur propre version de développement de Linux (quelque chose comme linux-2.6.18-xy ) et implémente un nouvel appel syscall. S'il comstack maintenant un binary en utilisant cette version du kernel, le binary est étiqueté avec cette version. Ainsi, vous pourrez plus tard savoir que cela peut ou non fonctionner.

Btw, /usr/include/asm/unistd_32.h contient des numéros d'appel système, extrait:

 [...] #define __NR_restart_syscall 0 #define __NR_exit 1 #define __NR_fork 2 #define __NR_read 3 #define __NR_write 4 #define __NR_open 5 [...]