web-dev-qa-db-fra.com

Comment trouver quelle version de libc mon application est liée?

Lors de la création d'une application à l'aide de g ++, je ne transmets pas explicitement la bibliothèque libc en tant que bibliothèque à relier de la même manière que pour les autres bibliothèques (par exemple, en transmettant -lpthread). Je sais que libc porte le nom so libc.so.6 mais je suis consciente qu'il ne s'agit pas en réalité d'une bibliothèque mais d'un pointeur vers une autre version de libc (telle que libc-2.15.so). Ma question est la suivante: si j’avais plusieurs versions de libc sur mon ordinateur, comment puis-je savoir laquelle est réellement liée au libc.so.6.

14
mathematician1975

ldd devrait être l'outil de votre choix. Cela vous donne la bibliothèque partagée réellement liée.

confus@confusion:~/misc/test$ ldd -r -v testendian
    linux-vdso.so.1 =>  (0x00007fffbcfff000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5a4c5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1a5a8a5000)

    Version information:
    ./testendian:
        libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
    /lib/x86_64-linux-gnu/libc.so.6:
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
        ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

Dans le cas de la bibliothèque, vous pouvez simplement exécuter le fichier .so et on vous indiquera la version de la bibliothèque.

confus@confusion:~/misc/test$ /lib/x86_64-linux-gnu/libc.so.6 
GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al.
16
con-f-use