Я собрал libarrow.so и pyarrow из исходного кода, используя gcc7.2 в Redhat 7.4.Тем не менее, я застрял со следующей ошибкой, которая, кажется, вызвана использованием другой версии gcc (4.8.5 против 7.2.0).
[u0017649@sys-97675 ~]$ python
Python 3.7.1 (default, Dec 14 2018, 19:46:41)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyarrow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/u0017649/anaconda3/lib/python3.7/site-packages/pyarrow/__init__.py", line 47, in <module>
from pyarrow.lib import cpu_count, set_cpu_count
ImportError: /usr/local/lib64/libarrow.so.13: undefined symbol: _ZN5boost6system16generic_categoryEv
Я проверил с помощью ldconfig, и он ясно показываетэтот libarrow.so связан с libstdc ++. поэтому из Redhat OS (собранной с gcc4.8.5), а не с моей собственной сборкой с gcc7.2.0.
[u0017649@sys-97675 ~]$ sudo ldd /usr/local/lib64/libarrow.so.13
/usr/local/lib64/libarrow.so.13: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/lib64/libarrow.so.13)
/usr/local/lib64/libarrow.so.13: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/lib64/libarrow.so.13)
/usr/local/lib64/libarrow.so.13: /lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /usr/local/lib64/libarrow.so.13)
/usr/local/lib64/libarrow.so.13: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /usr/local/lib64/libarrow.so.13)
/usr/local/lib64/libarrow.so.13: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/lib64/libarrow.so.13)
linux-vdso64.so.1 => (0x00003fff92a70000)
libbrotlienc.so.1 => not found
libbrotlidec.so.1 => not found
libbrotlicommon.so.1 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00003fff924a0000)
librt.so.1 => /lib64/librt.so.1 (0x00003fff92470000)
liblz4.so.1 => /lib64/liblz4.so.1 (0x00003fff92430000)
libsnappy.so.1 => /lib64/libsnappy.so.1 (0x00003fff92400000)
libz.so.1 => /lib64/libz.so.1 (0x00003fff923c0000)
libzstd.so.1.3.7 => not found
libboost_system.so.1.68.0 => not found
libboost_filesystem.so.1.68.0 => not found
libboost_regex.so.1.68.0 => not found
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00003fff92230000)
Я перепроверил свой LD_LIBRARY_PATH, ноэто выглядит хорошо.
[u0017649@sys-97675 ~]$ env | grep LD_
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/lib:/lib64:/lib:
Что я сделал не так?Как мне исправить эту ситуацию?Просьба помочь.