Recherche des versions de bibliothèque auxquelles une bibliothèque a été liée

8

J'ai une bibliothèque qui a été compilée sur une machine Ubuntu inconnue, et j'aimerais déterminer quelle version d'Ubuntu cette machine avait au moment de la compilation.

Mon idée était d'essayer de trouver les versions des différentes bibliothèques utilisées (par exemple le noyau), sachant que ces versions ont changé avec différentes versions. Iv'e a essayé d'utiliser nmet ldd, mais je n'arrive pas à trouver d'informations pertinentes.

Aucune suggestion?

nbubis
la source

Réponses:

5

Peut être

 readelf -a 

Il affiche des informations sur les fichiers ELF. Si l'objet que vous étudiez contient toujours la section des commentaires, vous pouvez essayer de l'extraire en

 readelf -p .comment yourfile

Par exemple

$ cat test.c
int main () {
  return 0;
}
$ gcc test.c
$ readelf -p .comment a.out

String dump of section '.comment':
  [     0]  GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

objdump pourrait fournir les mêmes informations.

Si la section de commentaires est supprimée, vous pouvez essayer de lire les informations de version du symbole d'exécution GCC à partir de la readelf -acommande s'il s'agit d'une bibliothèque compilée c ++. Notez que c'est la version des symboles fournis au compilateur et pas nécessairement la version du compilateur. Je ne sais pas à quel point cela serait utile pour retrouver la version d'Ubuntu.

Jari Laamanen
la source
Non. Cela ne semble pas prometteur: OS / ABI: UNIX - System V Version ABI: 0
nbubis
Pourriez-vous expliquer comment vous vous y prenez? Iv'e a parcouru la sortie readelf et n'a rien trouvé d'utile. Merci!
nbubis
J'ai édité la réponse pour contenir un exemple.
Jari Laamanen