1

我在编译 SciPy 0.13.0 时遇到问题。在 CentOS 6.4 机器上,我的安装顺序是:

0-1 使用 gmp 5.1.3、mpc 1.0.1 和 mpfr 3.1.2 从源代码构建 GCC 4.8.2

0-2 使用 GCC 4.8.2 构建 Python 2.7.5

(1) 从源代码完整构建 ATLAS 3.10.1,包括 LAPACK 3.4.2。

(2) 使用 ATLAS/LAPACK 构建 Numpy 1.8.0

(3) 构建 SciPy 0.13.0

除了在构建期间向#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION 重复消息之外,我在这里遇到了问题:

> python runtests.py 
Building, see build.log...
Build OK
Running unit tests for scipy
NumPy version 1.8.0
NumPy is installed in /usr/local/python-2.7.5/lib/python2.7/site-packages/numpy
SciPy version 0.13.0
SciPy is installed in /root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy
Python version 2.7.5 (default, Oct 30 2013, 10:05:47) [GCC 4.8.2]
nose version 1.3.0
/usr/local/python-2.7.5/lib/python2.7/site-packages/numpy/lib/utils.py:134: DeprecationWarning: `scipy.lib.blas` is deprecated, use `scipy.linalg.blas` instead!
  warnings.warn(depdoc, DeprecationWarning)
/usr/local/python-2.7.5/lib/python2.7/site-packages/numpy/lib/utils.py:134: DeprecationWarning: `scipy.lib.lapack` is deprecated, use `scipy.linalg.lapack` instead!
  warnings.warn(depdoc, DeprecationWarning)
E...........................................................K..................................................................................................................K...............................EE..............................................................................................................................................SSSSSS......SSSSSS......SSSS......................................................................................0-th dimension must be fixed to 3 but got 15
..0-th dimension must be fixed to 3 but got 5
..................................K..............................................................................................................................................................................................................................................................................................K.................................................................................................................................................................E......E.......................................................SSSSSS.K..........S............................................................./usr/local/python-2.7.5/lib/python2.7/site-packages/numpy/core/_methods.py:55: RuntimeWarning: Mean of empty slice.
  warnings.warn("Mean of empty slice.", RuntimeWarning)
..............................................................................................................................................................................................................................................................................................................................................................................EEEE.................................................................................................../root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/special/_testutils.py:244: RuntimeWarning: invalid value encountered in greater
  pinf_x = np.isinf(x) & (x > 0)
/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/special/_testutils.py:245: RuntimeWarning: invalid value encountered in greater
  pinf_y = np.isinf(y) & (y > 0)
/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/special/_testutils.py:246: RuntimeWarning: invalid value encountered in less
  minf_x = np.isinf(x) & (x < 0)
/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/special/_testutils.py:247: RuntimeWarning: invalid value encountered in less
  minf_y = np.isinf(y) & (y < 0)
.....................................................................................................................................................................................................................................................................................................................................................................................................................SSSSSSSS..............................................E..................................................................................................................................................
======================================================================
ERROR: Failure: ImportError (/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/sparsetools/_csr.so: undefined symbol: _ZNSt8ios_base4InitD1Ev)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/python-2.7.5/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/loader.py", line 413, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/local/python-2.7.5/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/local/python-2.7.5/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/cluster/__init__.py", line 27, in <module>
    from . import vq, hierarchy
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/cluster/hierarchy.py", line 176, in <module>
    import scipy.spatial.distance as distance
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/spatial/__init__.py", line 89, in <module>
    from .kdtree import *
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/spatial/kdtree.py", line 8, in <module>
    import scipy.sparse
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/__init__.py", line 206, in <module>
    from .csr import *
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/csr.py", line 15, in <module>
    from .sparsetools import csr_tocsc, csr_tobsr, csr_count_blocks, \
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/sparsetools/__init__.py", line 5, in <module>
    from .csr import *
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/sparsetools/csr.py", line 26, in <module>
    _csr = swig_import_helper()
  File "/root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/sparsetools/csr.py", line 22, in swig_import_helper
    _mod = imp.load_module('_csr', fp, pathname, description)
ImportError: /root/scipy-0.13.0/build/testenv/lib/python2.7/site-packages/scipy/sparse/sparsetools/_csr.so: undefined symbol: _ZNSt8ios_base4InitD1Ev

<abbreviate error for undefined symbol, which occurs many times>

----------------------------------------------------------------------
Ran 2168 tests in 20.750s

FAILED (KNOWNFAIL=5, SKIP=31, errors=10)

NumPy 没有大问题——

> python
Python 2.7.5 (default, Oct 30 2013, 10:05:47) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.test()
Running unit tests for numpy
NumPy version 1.8.0
NumPy is installed in /usr/local/python-2.7.5/lib/python2.7/site-packages/numpy
Python version 2.7.5 (default, Oct 30 2013, 10:05:47) [GCC 4.8.2]
nose version 1.3.0
.............................S...........................................................................................................................................................................................................................................................................................................................................................................................................................................................S..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................K.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................K...........................................................................................................K......................K..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................K....................................................
----------------------------------------------------------------------
Ran 4969 tests in 62.639s

OK (KNOWNFAIL=5, SKIP=2)
<nose.result.TextTestResult run=4969 errors=0 failures=0>

从我通过一些搜索发现的内容来看,未解析的符号似乎与构建事物的 libstdc++ 有关。当我检查 GCC 4.8.2 libstdc++ 时:

>ldd libstdc++.so
    linux-gate.so.1 =>  (0x55575000)
    libm.so.6 => /lib/libm.so.6 (0x5566d000)
    libc.so.6 => /lib/libc.so.6 (0x55697000)
    /lib/ld-linux.so.2 (0x55555000)
    libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x5582e000)

我看到对 libgcc_s 的引用。当我第一次构建 Numpy 时,我看到以下消息:

gcc -pthread _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -latlas -o _configtest
/usr/bin/ld: skipping incompatible /usr/local/lib/libgcc_s.so when searching for -lgcc_s

由于我不熟悉 SciPy(或 Numpy)的源代码,我不明白为什么 NumPy 会构建和测试良好但 SciPy 不会。如果我编译包,也会出现关于兼容性的相同错误scikit-learn,让我相信这与 libgcc_s 库有关。如果我尝试检查 libgcc_s 的依赖关系,我会得到以下信息(问题?):

[root lib64]# ldd libgcc_s.so
ldd: warning: you do not have execution permission for `./libgcc_s.so'
    linux-vdso.so.1 =>  (0x00007fffe1bff000)
    libc.so.6 => /lib64/libc.so.6 (0x00002abebff7c000)
    /lib64/ld-linux-x86-64.so.2 (0x00002abebfb3a000)
[root lib64]# ls -l libgcc_s.so*
lrwxrwxrwx. 1 root root 30 Oct 30 10:22 libgcc_s.so -> ../gcc-4.8.2/lib64/libgcc_s.so
lrwxrwxrwx. 1 root root 32 Oct 30 10:22 libgcc_s.so.1 -> ../gcc-4.8.2/lib64/libgcc_s.so.1
[root lib64]# ls -l ../lib/libgcc_s.so*
lrwxrwxrwx. 1 root root 28 Oct 30 10:22 ../lib/libgcc_s.so -> ../gcc-4.8.2/lib/libgcc_s.so
lrwxrwxrwx. 1 root root 30 Oct 30 10:22 ../lib/libgcc_s.so.1 -> ../gcc-4.8.2/lib/libgcc_s.so.1

任何有关此类问题的帮助或经验将不胜感激。

4

0 回答 0