我正在使用用gcc 7.2构建的Anaconda3 v5.3中的Python 3.7,在用gcc 4.8.4构建的Redhat 7.5 ppc64le上。
我在此环境中构建了pyarrow,但是在执行导入pyarrow时始终遇到以下错误。
$ python
Python 3.7.0 (default, Jun 28 2018, 13:02:24)
[GCC 7.2.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/bsyu/files/arrow/python/pyarrow/__init__.py", line 54, in <module>
from pyarrow.lib import cpu_count, set_cpu_count
ImportError: /home/bsyu/files/arrow/python/pyarrow/lib.cpython-37m-powerpc64le-linux-gnu.so: undefined symbol: _ZNK5arrow11StructArray14GetFieldByNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
我看到这是链接使用不同版本的gcc构建的共享对象的一个非常常见的错误。我尝试使用gcc 7.2构建pyarrow,但最终出现另一个未定义的符号错误。
ImportError: /home/bsyu/anaconda3/lib/python3.7/site-packages/pyarrow/libparquet.so.12: undefined symbol: _ZN5boost13match_resultsIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEE12maybe_assignERKSF_
我有两个问题:
在Redhat 7.5上使用Anaconda3 v5.3时,一般的建议是什么?使用gcc 7.2吗?使用-D_GLIBCXX_USE_CXX11_ABI=0
吗?这些未定义的符号错误是否会打扰您?
我们如何找到用于共享库的_GLIBCXX_USE_CXX11_ABI的值?我尝试过字符串,但是它只显示了很多东西。
$ strings /home/bsyu/anaconda3/lib/python3.7/site-packages/pyarrow/libparquet.so.12.0.0 | grep CXXABI
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3
CXXABI_1.3.3
CXXABI_1.3.5