Python 使用ATLAS 3.10.1/LAPACK 3.4.2构建的Numpy 1.8.0构建SciPy 0.13.0时出现的问题

Python 使用ATLAS 3.10.1/LAPACK 3.4.2构建的Numpy 1.8.0构建SciPy 0.13.0时出现的问题,python,gcc,numpy,scipy,Python,Gcc,Numpy,Scipy,我在编译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使用GCC4.8.2构建Python 2.7.5 (1) 从源代码完整构建ATLAS 3.10.1,包括LAPACK 3.4.2 (2) 使用ATLAS/LAPACK构建Numpy 1.8.0 (3) 构建scipy0.13.0 在构建过程中,除了重复发出“定义NPY\U否不推荐的NPY\U A

我在编译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使用GCC4.8.2构建Python 2.7.5

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

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

(3) 构建scipy0.13.0

在构建过程中,除了重复发出“定义NPY\U否不推荐的NPY\U API 1\U 7\U API\U版本”的消息外,我在这里遇到了问题:

> 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)
我看到了对libgcc_的引用。 当我第一次构建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_库有关。 如果我尝试检查libgcc_的依赖关系,我会得到以下结果(问题?):


非常感谢您在此类问题上提供的任何帮助或经验。

最可能的解释是您的GCC构建有问题。您得到的gcc_错误表明您的gcc工具链无法正常工作。也许它不包括C++或FORTRAN编译器,谢谢你的建议。在一个沙箱中,我从源代码构建了GCC/Python,然后使用本地Python构建了Numpy/Nose/Cython,显式地隐藏了调优后的ATLAS/LAPACK。我安装了BLAS/LAPACK的股票版本,然后还使用本地Python构建了SciPy。在这种情况下,SciPy测试通过了。但是--我注意到构建使用的是我用来构建我的原始环境的原始GCC4.8.2(GCC/gfortran),这显示了问题。那么,这个问题可能与ATLAS/LAPACK的构建方式有关?
>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)
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
[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