2010-04-07 6 views
0

installation document에 링크 된 미리 만들어진 ATLAS 라이브러리 (atlas3.6.0_WinNT_P4SSE2.zip)로 빌드 된 numpy-1.3.0을 사용하여 Windows에서 SciPy 0.7.1을 컴파일하려 한 사람이 있습니까? .Windows 32 비트에서 scipy 컴파일 : libf77blas.a의 링커 오류

다음 링커 오류가 발생하며이 문제를 해결하는 방법에 대한 아이디어가 없습니다.

$ 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

설치 지침이 오래되었습니다. 먼저, 윈도우가 아닌 매우 좋은 이유가 없다면 바이너리 설치 프로그램을 사용해야합니다. 여기에서는 numpy 자체가 작성된 것과 다른 ATLAS에 연결됩니다. 제대로 작동하지 않을 수 있습니다 (numpy 및 scipy는 서로 다른 버전의 Atlas를 사용합니다).

사용자가 직접 빌드해야 할 충분한 이유가 있다고 가정하면 vendor directory of our repo의 바이너리 설치 프로그램에서 사용하는 아틀라스 바이너리를 얻을 수 있습니다.

+0

감사합니다. http://svn.scipy.org/svn/numpy/vendor/binaries/는 32 비트 빌드에서만 작동합니까? –

+1

예, Windows 64 AFAIK에서는 ATLAS를 빌드 할 수 없습니다. 유일한 기회 ATM은 MKL (또는 numpy 빌드 시스템으로 잠수 할만큼 충분히 미친 경우 win64에서 작동하는 다른 독점 구현을 사용하는 것입니다.)). –

+0

BTW, 나는 MKL로 numpy를 만들 수있었습니다. 이제 scipy .. 포트란 컴파일러가 필요합니다. mingw-w64의 g77.exe가 지원됩니까? 또는 유일한 권장 방법은 무엇입니까? –

관련 문제