web-dev-qa-db-fra.com

matlab sur linux ne peut rien tracer (ne peut pas charger libstdc ++. so.6: la version `CXXABI_1.3.8 'est introuvable)

J'utilise matlab R2016a sur Fedora 24 et je ne peux pas utiliser la commande plot.

C'est l'erreur que j'obtiens:

Error using gca

While setting the 'Parent' property of 'Axes':

Can't load '/usr/local/MATLAB/R2016a/bin/glnxa64/libmwosgserver.so': /usr/local/MATLAB/R2016a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version 'CXXABI_1.3.8' not found (required by /lib64/libGLU.so.1)

Error in newplot (line 73)

ax = gca(fig);

J'ai aussi vu Comment résoudre le problème: [nom du programme] /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8 'introuvable (obligatoire avec [nom du programme] ) et ça n’aide pas.

12
saiedmomen

Ce que j’ai fait, c’est que j’ai édité un fichier nommé .matlab7rc.sh (situé dans le dossier "path_to_ matlab/bin" et son caché) et que je n'ai pas commenté toutes les lignes présentes (il y en a plusieurs):

LDPATH_PREFIX='$MATLAB/sys/opengl/lib/$Arch'

Ce qui suit est indiqué dans le fichier pour décommenter cette ligne (s) 

Pour toujours utiliser les bibliothèques OpenGL fournies avec MATLAB, décommentez la prochaine ligne .

Bien que cela ait certainement fonctionné, je suis curieux de savoir si l'utilisation d'OpenGL fourni avec MATLAB dégrade les performances et, en général, en quoi cette approche se compare à la réponse de @ joe_st_amand.

14
saiedmomen

J'ai eu le même problème avec cette version de Matlab et Fedora. Il semble que matlab ajoute ses propres chemins de bibliothèque au démarrage à LD_LIBRARY_PATH.

Vous pouvez démarrer matlab avec et lui dire d’utiliser la bonne version de libstdc ++ en utilisant les éléments suivants: LD_PRELOAD =/usr/lib64/libstdc ++. So.6 matlab -desktop

J'ai ajouté un alias à mon fichier .bashrc: Alias ​​matlab = 'LD_PRELOAD =/usr/lib64/libstdc ++. So.6 matlab -desktop'

J'espère que cela pourra aider!

9
Joe St Amand

Solution de rechange:

Renommez le fichier de bibliothèque libstdc ++. So.6 afin que MATLAB ne puisse pas le trouver et soit contraint d'utiliser la version système de la bibliothèque. Ce fichier se trouve dans matlabroot/sys/os/glnxa64 /

Source: https://in.mathworks.com/matlabcentral/answers/329796-issue-with-libstdc-so-6

J'ai essayé et cela a fonctionné comme un charme.

0
Joseph

Ce qui suit a travaillé dans Fedora 28 scientific

> cd ~/usr/lib64
> ls libstd*

Pour moi la sortie était

libstdc++.so.6  libstdc++.so.6.0.25

Donc, je viens d'ajouter un alias dans ~/.bashrc avec le répertoire à libstdc++.so.6.0.25

> emacs ~/.bashrc

Écrivez la ligne suivante à la fin:

alias matlab='LD_PRELOAD=/usr/lib64/libstdc++.so.6  /your/dir/to/bin/glnxa64/MATLAB -desktop'

/your/dir/to/ est le répertoire de votre installation MATLAB. ensuite

> source ~/.bashrc

et après cela, je lance simplement > matlab dans le terminal et tout va bien.

0
jealcalat