Bonjour Forum !
J'utilise Linux SUSE 9.1 - J'ai installé un logiciel (virtual box) qui ne veux pas tourner, car il réclame libstdc++6 alors que ma distro fournit libstdc++5.
Pourriez vous expliquer en termes simples comment faire pour résoudre cette incompatibilité sans casser les autres applications ? Naturellement, SUSE 9.1 ne fournit pas cette version de GNU C++ !
Puis-je me contenter de faire un lien vers l'actuelle librairie C++ (5) ?
Ou bien puis-je charger libstdc++.so.6 (d'où la prendre ?) et la mettre (dans quel répertoire ?) en parallèle avec l'installation existante ? Je crois avoir lu quelque part qu'il existe un moyen de désigner un chemin de librairies pour lancer un programme particulier.
Comme vous voyez cher Forum, je suis nouveau sous Linux, donc j'aurais besoin d'instructions assez détaillées - mais SVP ne me dites pas de changer de distro, ce n'est en aucun cas le but de l'exercice.
--
Mongo
# Bizarre
Posté par peck (site web personnel) . Évalué à 3.
Tu ne peux pas faire un lien vers la 5, c'est garanti que ca ne marchera pas, les numéro de version majeur sont là à cause de ca.
Si tu peux trouver une version 6, tu peux la mettre a coté de la 5 dans /usr/lib ca ne posera pas de problème.
[^] # Re: Bizarre
Posté par Pascal Terjan (site web personnel) . Évalué à 3.
Elle utilisait gcc 3.3.4, et le passage à la libstdc++ 6 date du passage à gcc 3.4.0 qui venait juste de sortir (20 Avril 2004) donc rien de surprenant :)
[^] # changer la libstdc
Posté par mongolinux . Évalué à 2.
J'ai téléchargé une version compilée (ELF) de la libstdc++.so.6.0.7 - compatible, j'espère, avec mon processeur et mon noyau - et l'ai mise à coté de l'ancienne, sous /usr/lib/
J'ai créé un lien nommé libstdc++.so.6 vers la nouvelle lib.
En dépit de ces efforts, VBox continue de réclamer libstdc.so.6 !
Je suppose qu'il n'est pas question de faire pointer le lien de plus hait niveau, "libstdc.so" vers la nouvelle lib ?
J'ai lu qqpart qu'il est possible de spécifier une libraire "de rechange" au lancement d'un programme particulier, mais je ne retrouve pas la référence...
Je suis sans doute naif, mais il me semble que je ne suis pas loin du but maintenant; pouvez-vous m'aider ?
[^] # Re: changer la libstdc
Posté par peck (site web personnel) . Évalué à 2.
ldd /usr/bin/vbox
Cela te dira ce que cherche le binaire comme bibliothèque pour fonctionner.
Sinon pour spécifier une bibliothèque avant le chargement, il existe la variable LD_PRELOAD.
[^] # Re: changer la libstdc
Posté par mongolinux . Évalué à 1.
J'ai obtenu ces infos en definissant la variable :
# export LD_DEBUG=libs
Puis en lançant VirtualBox dans un terminal. Le rapport montre bien que ma libstdc++.so.6 est trouvée et chargée (partie du rapport non copiée ici). Mais un peu plus tard, comme ceci, couic! :
_______________________________________________________________________
(....)
9289: find library=libncurses.so.5; searching
9289: search path=/opt/VirtualBox-2.1.2 (RPATH
from file ./VirtualBox)
9289: trying file=/opt/VirtualBox-2.1.2/libncurses.so.5
9289: search path=/opt/VirtualBox-2.1.2 (RPATH
from file ./VirtualBox)
9289: trying file=/opt/VirtualBox-2.1.2/libncurses.so.5
9289: search cache=/etc/ld.so.cache
9289: trying file=/lib/libncurses.so.5
9289:
Exception en point flottant
_______________________________________________________________
... Et voici la fin du rapport obtenu avec LD_DEBUG=all :
_______________________________________________________________
(....)
9414: checking for version `GLIBC_2.1' in file
/lib/tls/libc.so.6 required by file /lib/libncurses.so.5
9414: checking for version `GLIBC_2.0' in file
/lib/tls/libc.so.6 required by file /lib/libncurses.so.5
9414:
9414: relocation processing: /lib/libncurses.so.5
9414: symbol=_nc_outch; lookup in file=./VirtualBox
9414: symbol=_nc_outch; lookup in
file=/lib/tls/libpthread.so.0
9414: symbol=_nc_outch; lookup in file=/lib/libdl.so.2
9414: symbol=_nc_outch; lookup in
file=/usr/lib/libstdc++.so.6
9414: symbol=_nc_outch; lookup in file=/lib/tls/libc.so.6
9414: symbol=_nc_outch; lookup in file=/lib/ld-linux.so.2
9414: symbol=_nc_outch; lookup in file=/lib/tls/libm.so.6
9414: symbol=_nc_outch; lookup in file=/lib/libgcc_s.so.1
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/VBoxRT.so
9414: symbol=_nc_outch; lookup in file=/lib/tls/librt.so.1
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/VirtualBox.so
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/VBoxKeyboard.so
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/VBoxRT.so
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libXcursor.so.1
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libXext.so.6
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libX11.so.6
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/VBoxXPCOM.so
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/libVBoxQtCore.so.4
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/libVBoxQtGui.so.4
9414: symbol=_nc_outch; lookup in file=/opt/VirtualBox-
2.1.2/libVBoxQtNetwork.so.4
9414: symbol=_nc_outch; lookup in file=/usr/lib/libSDL-
1.2.so.0
9414: symbol=_nc_outch; lookup in
file=/usr/lib/libstdc++.so.6
9414: symbol=_nc_outch; lookup in file=/lib/libgcc_s.so.1
9414: symbol=_nc_outch; lookup in file=/lib/tls/libc.so.6
9414: symbol=_nc_outch; lookup in
file=/lib/tls/libpthread.so.0
9414: symbol=_nc_outch; lookup in file=/lib/tls/librt.so.1
9414: symbol=_nc_outch; lookup in file=/lib/libdl.so.2
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libXrender.so.1
9414: symbol=_nc_outch; lookup in file=/lib/tls/libm.so.6
9414: symbol=_nc_outch; lookup in
file=/usr/lib/libfontconfig.so.1
9414: symbol=_nc_outch; lookup in file=/lib/libz.so.1
9414: symbol=_nc_outch; lookup in
file=/opt/gnome/lib/libgthread-2.0.so.0
9414: symbol=_nc_outch; lookup in
file=/opt/gnome/lib/libglib-2.0.so.0
9414: symbol=_nc_outch; lookup in
file=/usr/lib/libpng12.so.0
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libSM.so.6
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libICE.so.6
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libXi.so.6
9414: symbol=_nc_outch; lookup in
file=/usr/X11R6/lib/libXrandr.so.2
9414: symbol=_nc_outch; lookup in
file=/usr/lib/libXfixes.so.3
Exception en point flottant
_________________________________________________________________
Que se passe-t-il donc là ? Merci de votre aide, je me sens vraiment, de plus en plus....
--
Mongolinux
[^] # Re: changer la libstdc
Posté par NeoX . Évalué à 2.
[...]9414: checking for version `GLIBC_2.1' in file
/lib/tls/libc.so.6 required by file /lib/libncurses.so.5
9414: checking for version `GLIBC_2.0' in file
/lib/tls/libc.so.6 required by file /lib/libncurses.so.5[...]
apres libstdc++.so.6 il semblerait qu'il te faille un /lib/tls/libc.so.6
[^] # Re: changer la libstdc
Posté par mongolinux . Évalué à 1.
euh, non, je l'ai bien celle-là. Je crois que ce n'est pas ce que dis le rapport.
[^] # Re: changer la libstdc
Posté par peck (site web personnel) . Évalué à 2.
Ce qui veut dire qu'il faudrait, plutot que de récupérer une libstdc++ et de l'installer telle quelle, en récupérer les sources et la recompiler.
[^] # Re: changer la libstdc
Posté par mongolinux . Évalué à 1.
--
Mongo
La peinture à l'huile c'est bien difficile...
[^] # Re: changer la libstdc
Posté par mongolinux . Évalué à 1.
Pourtant j'ai toujours la meme exception de "point flottant" (sic) -
ceci me semble confirmer que le problème ne vient pas de libstdc++.
Il semble que ce soit libncurses qui 'tue' le chargeur, pourtant le numero de version est compatible.
Ça devient épique pour ne pas dire héroïque, je trouve :(
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.