Je cours Fedora 25, qui est livré avec gcc/g++/libstdc++
version 6.3.1. Je cours également la version 4.3.1 d'Anaconda, qui vient avec libstdc++ 6.0.19
.Installation d'Orange3 dans Anaconda: incompatibilité g ++ et libstdC++
Lors de l'installation Orange3 sous Anaconda (en disant "pip installer orange3"), certains fichiers sont compilés avec Fedoras g ++, mais liés contre Anacondas libstdC++:
Notez la troisième ligne de la sortie:
$ ldd ~/anaconda3/lib/python3.6/site-packages/Orange/widgets/utils/_grid_density.cpython-36m-x86_64-linux-gnu.so
linux-vdso.so.1 (0x00007ffe9b5a2000)
libpython3.6m.so.1.0 => /home/marhoy/anaconda3/lib/libpython3.6m.so.1.0 (0x00007efc3a6ef000)
libstdc++.so.6 => /home/marhoy/anaconda3/lib/libstdc++.so.6 (0x00007efc3a3d9000)
libm.so.6 => /lib64/libm.so.6 (0x00007efc3a0ad000)
libgcc_s.so.1 => /home/marhoy/anaconda3/lib/libgcc_s.so.1 (0x00007efc39e97000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007efc39c79000)
libc.so.6 => /lib64/libc.so.6 (0x00007efc398b1000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007efc396ad000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007efc394aa000)
librt.so.1 => /lib64/librt.so.1 (0x00007efc392a2000)
/lib64/ld-linux-x86-64.so.2 (0x000055a3c43d1000)
Cela provoque des problèmes, car il existe des différences entre 6.3.1 et 6.0.19. Alors, quand je tente d'utiliser le widget diagramme de dispersion, je reçois:
_grid_density.cpython-36m-x86_64-linux-gnu.so: undefined symbol: __cxa_throw_bad_array_new_length
Si je LD_PRELOAD Fedoras libstdC++, tout semble bien fonctionner. Et si j'installe Orange3 en dehors d'Anaconda (en utilisant pip3 install --user orange3), cela fonctionne également.
La raison pour laquelle je n'installe pas Orange3 à partir du dépôt conda est qu'il est obsolète.
Alors: Comment puis-je faire le lien entre les fichiers Orange et mon Fedora libstdC++?