Компиляция scipy в Windows 32-bit: ошибка компоновщика с libf77blas.a - PullRequest
0 голосов
/ 08 апреля 2010

Кто-нибудь пробовал скомпилировать SciPy 0.7.1 в Windows, используя numpy-1.3.0, созданный с помощью предварительно собранных библиотек ATLAS (atlas3.6.0_WinNT_P4SSE2.zip), связанных в документе .

Я получаю следующую ошибку компоновщика и не знаю, как решить эту проблему.

$ python setup.py config --compiler=mingw32 build --compiler=mingw32 install --root=i
[...]
creating build\temp.win32-2.6\Release
creating build\temp.win32-2.6\Release\scipy
creating build\temp.win32-2.6\Release\scipy\integrate
compile options: '-DNO_ATLAS_INFO=2 -I"C:\Documents and Settings\apy\Application Data\Python\Python26\site-packages\numpy\core\inc
lude" -IC:\Python26\include -IC:\Python26\PC -c'
gcc -mno-cygwin -O2 -Wall -Wstrict-prototypes -DNO_ATLAS_INFO=2 -I"C:\Documents and Settings\apy\Application Data\Python\Python26\
site-packages\numpy\core\include" -IC:\Python26\include -IC:\Python26\PC -c scipy\integrate\_odepackmo
dule.c -o build\temp.win32-2.6\Release\scipy\integrate\_odepackmodule.o
C:\MinGW\bin\g77.exe -g -Wall -mno-cygwin -g -Wall -mno-cygwin -shared build\temp.win32-2.6\Release\scipy\integrate\_odepackmodule
.o -LC:\atlas3.6.0_WinNT_P4SSE2 -LC:\MinGW\lib -LC:\MinGW\lib\gcc\mingw32\3.4.5 -LC:\Python26\libs -LC:\Act
ivePython32Python26\PCbuild -Lbuild\temp.win32-2.6 -lodepack -llinpack_lite -lmach -latlas -lcblas -lf77blas -llapack -lpython26 -
lg2c -o build\lib.win32-2.6\scipy\integrate\_odepack.pyd
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_daxpy.o):ATL_F77wrap_axpy.c:(.text+0x3c): undefined reference to `ATL
_daxpy'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_dscal.o):ATL_F77wrap_scal.c:(.text+0x26): undefined reference to `ATL
_dscal'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_dcopy.o):ATL_F77wrap_copy.c:(.text+0x3d): undefined reference to `ATL
_dcopy'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_idamax.o):ATL_F77wrap_amax.c:(.text+0x1e): undefined reference to `AT
L_idamax'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_ddot.o):ATL_F77wrap_dot.c:(.text+0x36): undefined reference to `ATL_d
dot'
collect2: ld returned 1 exit status
error: Command "C:\MinGW\bin\g77.exe -g -Wall -mno-cygwin -g -Wall -mno-cygwin -shared build\temp.win32-2.6\Release\scipy\integrat
e\_odepackmodule.o -LC:\atlas3.6.0_WinNT_P4SSE2 -LC:\MinGW\lib -LC:\MinGW\lib\gcc\mingw32\3.4.5 -LC:\Python
26\libs -LC:\Python26\PCbuild -Lbuild\temp.win32-2.6 -lodepack -llinpack_lite -lmach -latlas -lcblas -lf77blas -llap
ack -lpython26 -lg2c -o build\lib.win32-2.6\scipy\integrate\_odepack.pyd" failed with exit status 1

Кто-нибудь знает, что здесь могло пойти не так? Поиск ATL_daxpy, например, в libf77blas.a привел:

$ strings libf77blas.a  | grep -i daxpy
_daxpy_
_atl_f77wrap_daxpy_
ATL_F77wrap_daxpy.o/
daxpy.o/        1081731936  1003  513   100755  420       `
daxpy.f
_daxpy_
_atl_f77wrap_daxpy_
_atl_f77wrap_daxpy_
_ATL_daxpy

Существует _ATL_daxpy, но нет ATL_daxpy.

1 Ответ

1 голос
/ 22 апреля 2010

Наши инструкции по установке ужасно устарели. Во-первых, вы должны использовать бинарный установщик, если у вас нет веских причин не использовать Windows. Здесь вы ссылаетесь на ATLAS, который отличается от того, на котором был построен сам numpy, и вряд ли будет работать хорошо (numpy и scipy будут использовать разные версии атласа).

Предполагая, что у вас есть веская причина для его сборки, вы можете получить исполняемые файлы atlas, которые мы используем в установщиках двоичных файлов, в каталоге vendor нашего репозитория .

...