web-dev-qa-db-fra.com

Mise à jour de libstdc ++. So.6 vers GLIBCXX_3.4.21 et CXXABI_1.3.9 après la mise à jour vers gcc 7.3

J'ai un serveur RHEL (Maipo), et j'ai fait l'installation de gcc 7.3 (gcc 7.3.0) - publié le 25/01/2018. Pour installer gcc, j'ai suivi Comment installer gcc 5.3 avec yum sur CentOS 7.2?

Cependant, lors de l'installation de certains logiciels dont j'ai besoin (qui nécessitent gcc> 4.9), j'ai toujours des problèmes avec les bibliothèques g ++. J'avais supposé que la compilation de gcc comme indiqué aurait dû fournir les bonnes bibliothèques? Mais je reçois:

/lib64/libstdc++.so.6: version CXXABI_1.3.9' not found 
/lib64/libstdc++.so.6: versionGLIBCXX_3.4.21' not found

Ce sont toujours dans la version 4.8.5 de g ++ (libstdc ++. So.6.0.19 - c'est la seule version). J'ai vérifié et n'atteint pas les 1.3.9 et 3.4.21.

En raison de mon abonnement à RedHat (serveur académique), je ne peux pas accéder au pack d'outils développeur - celui qui est disponible pour moi remonte à gcc 4.8.5.

Si quelqu'un a une idée de la façon de résoudre ce problème, j'apprécierais vraiment votre aide. Et je m'excuse si cela semble stupide.

5
Leo

J'ai également construit gcc 7.3 à partir de sources. Mon exemple de nom de programme est consolehost.

J'ai fait ce qui suit:

>ldd ./consolehost
./consolehost: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./consolehost)
./consolehost: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./consolehost)
        linux-vdso.so.1 =>  (0x00007ffd79916000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8458cfc000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f84589f4000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f84586f1000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f84584db000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f8458118000)
        /lib64/ld-linux-x86-64.so.2 (0x0000556169234000)

Ensuite, j'ai étudié cela:

>ls -ALi /lib64/libstdc++.so.6
37631 lrwxrwxrwx. 1 root root 19 мар 17 06:38 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.19

J'ai compris que j'avais besoin d'une version plus fraîche que 6.0.19. Alors

>Sudo find / -name "libstdc++.so.6*"
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/local/lib64/libstdc++.so.6.0.24
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.24-gdb.py
/home/declspec/gcc_build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
/home/declspec/gcc_build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/declspec/gcc_build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
/home/declspec/gcc_build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/declspec/gcc_build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
/home/declspec/gcc_build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6

À ce moment, je dois copier libstdc ++. So.6.0.24 dans/lib64/et créer un nouveau lien symbolique.

Sudo mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6.orig
Sudo ln -s /lib64/libstdc++.so.6.0.24 /lib64/libstdc++.so.6

Ça m'aide. J'espère que cela vous aide aussi. Ce lien décrit GLIBCXX, mais je n'ai pas compris comment cela fonctionne et quel est son objectif (pourquoi les versions ne suffisent pas)

3
FunctorPrototype