Como posso encontrar a qual versão do libc meu aplicativo está vinculada?

11

Ao criar um aplicativo usando o g ++, não estou explicitamente passando a biblioteca libc como uma biblioteca para vincular da mesma maneira que você faria com outras bibliotecas (como -lpthread , por exemplo). Eu sei que libc tem o mesmo nome libc.so.6 mas estou ciente de que isso não é realmente uma biblioteca, mas algo como um ponteiro para outra versão do libc (como libc-2.15.so ). Minha pergunta é se eu tinha várias versões da libc no meu computador, como saber qual delas realmente está vinculada ao libc.so.6 .

    
por mathematician1975 13.07.2012 / 13:37

1 resposta

13

ldd deve ser a ferramenta de sua escolha. Isso dá a você a biblioteca compartilhada realmente vinculada.

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

No caso da libc você pode simplesmente executar o arquivo .so e será informado da versão da biblioteca.

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.
    
por con-f-use 13.07.2012 / 15:10