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
このような問題に関するヘルプや経験は本当にありがたいです。