Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/11/2012, 11h56   #1
ikuzar
Membre actif
 
Étudiant
Inscription : décembre 2007
Messages : 614
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 614
Points : 189
Points : 189
Envoyer un message via MSN à ikuzar
Par défaut /lib/libc.so.6: version `GLIBC_2.11' not found

Bonjour,

J'ai compilé mon code et généré un executable sur ma machine (Ubuntu 10.04 - x86_64). J'ai copié l'executable sur une autre machine Debian (Debian GNU/Linux 5.0 - x86_64) afin de le lancer dessus. En lancant l'application sur Debian j'obtiens le message d'erreur suivant:
Code :
/lib/libc.so.6: version `GLIBC_2.11' not found (required by /home/testuser/appli2/bin/exec2)
Voici le resultat d'un ldd -v exec2 sur ma machine:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
linux-vdso.so.1 =>  (0x00007fff429e8000)
	libtcmalloc.so.0 => not found
	libprofiler.so.0 => not found
	libmysqlclient_r.so.16 => /usr/lib/libmysqlclient_r.so.16 (0x00007f2604e99000)
	libm.so.6 => /lib/libm.so.6 (0x00007f2604c16000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00007f26049f9000)
	libc.so.6 => /lib/libc.so.6 (0x00007f2604672000)
	libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007f2604439000)
	libnsl.so.1 => /lib/libnsl.so.1 (0x00007f260421f000)
	libz.so.1 => /lib/libz.so.1 (0x00007f2604007000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f26052bc000)

	Version information:
	./exec2:
		libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
		libmysqlclient_r.so.16 (libmysqlclient_16) => /usr/lib/libmysqlclient_r.so.16
		libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
		libpthread.so.0 (GLIBC_2.2.5) => /lib/libpthread.so.0
		libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.7) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.11) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
	/usr/lib/libmysqlclient_r.so.16:
		libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
		libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
		libpthread.so.0 (GLIBC_2.2.5) => /lib/libpthread.so.0
		libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libm.so.6:
		libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libpthread.so.0:
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
		libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libc.so.6:
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
	/lib/libcrypt.so.1:
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libnsl.so.1:
		libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libz.so.1:
		libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
Quand je compile le code sur une 3 ème machine Ubuntu ayant la meme version, meme config que la mienne et quand je lance le résultat (exec2) sur Debian, mon programme tourne bien.

voici un ldd -v exec2 fait sur la 3ème machine Ubuntu:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
linux-vdso.so.1 =>  (0x00007fffffffe000)
	libtcmalloc.so.0 => /usr/local/lib/libtcmalloc.so.0 (0x00007f2f8a1c8000)
	libprofiler.so.0 => /usr/local/lib/libprofiler.so.0 (0x00007f2f89fba000)
	libmysqlclient_r.so.16 => /usr/lib/libmysqlclient_r.so.16 (0x00007f2f89b95000)
	libm.so.6 => /lib/libm.so.6 (0x00007f2f89912000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00007f2f896f6000)
	libc.so.6 => /lib/libc.so.6 (0x00007f2f893a3000)
	libunwind.so.7 => /usr/local/lib/libunwind.so.7 (0x00007f2f8918a000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f2f88e7e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f2f8a431000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f2f88c67000)
	libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007f2f88a2f000)
	libnsl.so.1 => /lib/libnsl.so.1 (0x00007f2f88817000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007f2f88600000)

	Version information:
	./exec2:
		libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
		libmysqlclient_r.so.16 (libmysqlclient_16) => /usr/lib/libmysqlclient_r.so.16
		libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
		libpthread.so.0 (GLIBC_2.2.5) => /lib/libpthread.so.0
		libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.7) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
	/usr/local/lib/libtcmalloc.so.0:
		libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
		libgcc_s.so.1 (GCC_3.0) => /lib/libgcc_s.so.1
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
		libstdc++.so.6 (CXXABI_1.3) => /usr/lib/libstdc++.so.6
		libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/libstdc++.so.6
	/usr/local/lib/libprofiler.so.0:
		libgcc_s.so.1 (GCC_3.0) => /lib/libgcc_s.so.1
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/libstdc++.so.6
		libstdc++.so.6 (CXXABI_1.3) => /usr/lib/libstdc++.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/usr/lib/libmysqlclient_r.so.16:
		libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
		libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
		libpthread.so.0 (GLIBC_2.2.5) => /lib/libpthread.so.0
		libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libm.so.6:
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libpthread.so.0:
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
		libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/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
	/usr/local/lib/libunwind.so.7:
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/usr/lib/libstdc++.so.6:
		libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		libgcc_s.so.1 (GCC_4.2.0) => /lib/libgcc_s.so.1
		libgcc_s.so.1 (GCC_3.3) => /lib/libgcc_s.so.1
		libgcc_s.so.1 (GCC_3.0) => /lib/libgcc_s.so.1
		libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libgcc_s.so.1:
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libcrypt.so.1:
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/lib/libnsl.so.1:
		libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
	/usr/lib/libz.so.1:
		libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
Sur la 3è machine (Ubuntu, comme la mienne), la version du libc6 installée est biensur la meme que sur ma machine: c'est un 2.11 mais quand la 3ème machine génère l'exécutable, ELLE N'INCLUT PAS LA 2.11, ALORS QUE LA MIENNE L'INCLUT!!!. On peut voir la comparaison en rouge dans les résultats ci-dessus. Sur Debian, la version du libc6 installée est 2.7 et libc6.so pointe bien vers la version 2.7:
Code :
 0 lrwxrwxrwx 1 root root 11 oct 26  2011 /lib/libc.so.6 -> libc-2.7.so
tandis sur ma machine, libc6 pointe vers la 2.11:
Code :
0 lrwxrwxrwx 1 root root 14 2012-11-05 15:10 /lib/libc.so.6 -> libc-2.11.1.so
Ce qui fait que exec2 tourne sans problème suite à la compilation sur la 3ème machine.

Pour résoudre le problème, sachant que je ne peux rien modifier sur Debian, je pense que je dois compiler avec une version de libc6 2.7 (ou antérieure) sur ma machine. Mais comment faire cette manip ? Etes vous d'accord avec ma vision du problème... ?

Merci d'avance pour votre aide.
ikuzar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 13h30   #2
apesle
Membre habitué
 
Inscription : avril 2006
Messages : 105
Détails du profil
Informations personnelles :
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2006
Messages : 105
Points : 100
Points : 100
Bonjour,

Manifestement ta machine a eu une mise à jour que la 3iem n'a pas eu, ce qui fait que tu utilise une version plus récente de la libc (2.11).

Je crois que version de libc et version de gcc sont fortement liés. Tu devrais comparer la version de gcc sur ta machine, et celle sur la 3ieme machine.

Celle de la 3ieme machine doit surement etre une version antèrieur, que tu dois pouvoir appeler sur ta machine en fournissant le path complet vers l'executable.

Bonne chance

Edit :
Au passage, le forum linux serait peut être plus adapté à ton problème qui n'est pas lié au langage C lui-même.
apesle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 15h45   #3
ikuzar
Membre actif
 
Étudiant
Inscription : décembre 2007
Messages : 614
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 614
Points : 189
Points : 189
Envoyer un message via MSN à ikuzar
sur ma machine, dpkg -l | grep "gcc" me liste une seule version: gcc 4.4
sur la 3ème machine il y a 3 version gcc 4.1, 4.3 et 4.4
ikuzar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 16h00   #4
apesle
Membre habitué
 
Inscription : avril 2006
Messages : 105
Détails du profil
Informations personnelles :
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2006
Messages : 105
Points : 100
Points : 100
Sur la 3iem machine il y en a plusieurs d'installé, mais lequel est celui utilisé par défaut ?
gcc -v
apesle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h44.


 
 
 
 
Partenaires

Hébergement Web