83 votes

Vérifiez la version de la glibc pour un compilateur gcc particulier

J'ai deux compilateurs gcc installés sur mon système, l'un est gcc 4.1.2 (par défaut) et l'autre est gcc 4.4.4 . Comment puis-je vérifier la version de la libc utilisée par gcc 4.4.4 , car /lib/libc.so.6 affiche la glibc utilisée par gcc 4.1.2 , puisqu'il s'agit du compilateur par défaut.

87voto

John Points 421

encore plus facile

utiliser ldd --version

Cela devrait renvoyer la version de la glibc utilisée, c'est-à-dire

 $ ldd --version

ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

...

ce qui est le même résultat que d'exécuter ma bibliothèque libc

 $ /lib/libc.so.6 


GNU C Library (GNU libc) stable release version 2.17, by Roland McGrath et al.
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.

...

54voto

R1tschY Points 343

Ecrivez un programme de test (nommez-le par exemple glibc-version.c ):

 #include <stdio.h>
#include <stdlib.h>
#include <gnu/libc-version.h>

int main(int argc, char *argv[]) {
  printf("GNU libc version: %s\n", gnu_get_libc_version());
  exit(EXIT_SUCCESS);
}

et compilez-le avec le compilateur gcc-4.4 :

 gcc-4.4 glibc-version.c -o glibc-version

Lorsque vous exécutez ./glibc-version la version glibc utilisée est affichée.

39voto

Maxim Yegorushkin Points 29380

Utilisez l'option -print-file-name gcc

 $ gcc -print-file-name=libc.so
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64/libc.so

Cela donne le chemin. Maintenant:

 $ file /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64/libc.so
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64/libc.so: ASCII C program text

$ cat /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64/libc.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )

Ressemble à un script d'éditeur de liens. libc est spécial sur Linux en ce sens qu'il peut être exécuté :

 $ /lib64/libc.so.6
GNU C Library stable release version 2.13, by Roland McGrath et al.
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.5.1 20100924 (Red Hat 4.5.1-4).
Compiled on a Linux 2.6.35 system on 2011-08-05.
Available extensions:
    Support for some architectures added on, not maintained in glibc core.
    The C stubs add-on version 2.1.2.
    crypt add-on version 2.1 by Michael Glad and others
    GNU Libidn by Simon Josefsson
    Native POSIX Threads Library by Ulrich Drepper et al
    BIND-8.2.3-T5B
    RT using linux kernel aio
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

11voto

itisravi Points 827

Je doute que vous ayez plus d'une glibc installée sur votre système. Mais ldd -v <path/to/gcc-4.x> devrait vous donner la glibc utilisée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X