我正在运行gcc/g++/libstdc++
6.3.1 版本的 Fedora 25。我也在运行 Anaconda 版本 4.3.1,它带有libstdc++ 6.0.19
.
当我在 Anaconda 下安装 Orange3(通过说“pip install orange3”)时,一些文件是用 Fedoras g++ 编译的,但链接到 Anacondas libstdc++:
注意输出的第三行:
$ 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)
这会导致问题,因为 6.3.1 和 6.0.19 之间存在差异。因此,当我尝试使用散点图小部件时,我得到:
_grid_density.cpython-36m-x86_64-linux-gnu.so: undefined symbol: __cxa_throw_bad_array_new_length
如果我 LD_PRELOAD Fedoras libstdc++,一切似乎都正常。如果我在 Anaconda 之外安装 Orange3(通过使用 pip3 install --user orange3),它也可以工作。
我没有从 conda 存储库安装 Orange3 的原因是它已经过时了。
那么:我怎样才能使 Orange-files 链接针对我的 Fedora libstdc++ ?