web-dev-qa-db-fra.com

Version `GLIBCXX_3.4.22 'introuvable

J'ai construit une application C++ sur un VM Ubuntu 16.04 sur lequel j'ai installé le compilateur g ++ 6.2.0 afin de prendre en charge les fonctionnalités C++ 14. Lorsque j'ai essayé de l'exécuter sur un nouveau clean = VM 16.04 qui a par défaut le g ++ 5.4.0 l'erreur / usr/lib/x86_64-linux-gnu/libstdc ++. So.6: version `GLIBCXX_3.4.22 'introuvable apparaît.
J'ai remarqué que sur le VM avec la bibliothèque de compilation mise à jour libstdc ++. So.6.0.22 a été installé. Sur le propre VM = Je voudrais éviter de mettre à jour le compilateur, j'ai donc essayé d'installer uniquement le dernier paquet libstdc ++ 6. Cependant, la bibliothèque qui a été installée était libstdc ++. So.6.0.21 et donc le problème a persisté. Comment puis-je installer spécifiquement la version de libstdc ++. so.6.0.22?

12
dk13

Vous pouvez essayer d'utiliser épinglant pour vous assurer que seuls les packages souhaités sont mis à jour vers une version plus récente.

Alternativement, vous pouvez simplement compiler votre programme avec g ++ 5.4, car selon cette page , ce compilateur prend déjà en charge tous les c ++ 14, la seule différence est que g ++ - 6 par défaut est - std = c ++ 14 , alors qu'avec g ++ - 5, vous devez définir explicitement la norme de langage.

1
Gert Wollny

Vous devez mettre à niveau libstdc ++ 6 vers la dernière version comme celle-ci

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install gcc-4.9
Sudo apt-get upgrade libstdc++6

Après cela, vous pouvez vérifier si vous obtenez la version souhaitée de GLIBCXX comme ceci:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
30