[SciPy-User] Build on Win32-x86 / Intel fortran

Michael Sarahan msarahan at gmail.com
Mon Jan 18 20:03:33 EST 2016


Indeed, I had read Steve Dower's blog post (
http://stevedower.id.au/blog/building-for-python-3-5-part-two/) before, but
I should have re-read it:
=====================Always statically link

The build options are updated to statically link the DLL if
PY_VCRUNTIME_REDIST is empty.

If you set DISTUTILS_USE_SDK but not PY_VCRUNTIME_REDIST, you will get
statically linked vcruntime140.dll. This is probably the biggest surprise
from the change.

==========================


By setting the PY_VCRUNTIME_REDIST environment variable, everything works.

Thanks everyone.
Michael

On Mon, Jan 18, 2016 at 6:14 PM Michael Sarahan <msarahan at gmail.com> wrote:

> Thanks, Christoph.  I am reading your contributions to that discussion (
> https://bugs.python.org/issue24872) now.  That certainly looks like where
> the issue is.  I'm not sure where we're picking up those old flags, but I'm
> pretty sure finding out will fix things.
>
> Best,
> Michael
>
> On Mon, Jan 18, 2016 at 6:12 PM Christoph Gohlke <cgohlke at uci.edu> wrote:
>
>> Could it be that you are building with an older RC (non-final) version
>> of Python 3.5? Those versions were using `/MT` and
>> `/nodefaultlib:libucrt.lib ucrt.lib` flags, which were reverted in the
>> last RC and final.
>>
>> Christoph
>>
>>
>> On 1/18/2016 3:20 PM, Michael Sarahan wrote:
>> > Hi Ralf,
>> >
>> > Thanks for the fast reply!  I looked back at the history of that file,
>> > and that part seems pretty stable.  I don't think your recent changes
>> > are making the difference here.  Here's a little more of the build
>> > output that might be relevant:
>> >
>> > C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c
>> > /nologo /Ox /W3 /GL /DNDEBUG /MT -Iscipy\fftpack\src
>> > -Ibuild\src.win32-3.5
>> > -IC:\aroot\stage\lib\site-packages\numpy\core\include
>> > -IC:\aroot\stage\include -IC:\aroot\stage\include -I"C:\Program Files
>> > (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\include"
>> > -I"C:\Program Files
>> >
>> (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\include\ia32"
>> -I"C:\Program
>> > Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files
>> > (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program
>> > Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program
>> > Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files
>> > (x86)\Windows Kits\8.1\include\shared" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\winrt" -I"C:\Program Files
>> > (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\include"
>> > -I"C:\Program Files
>> > (x86)\IntelSWTools\compilers_and_libraries\windows\daal\include"
>> > -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE"
>> > -I"C:\Program Files (x86)\Microsoft Visual Studio
>> > 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program Files (x86)\Windows
>> > Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows
>> > Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\shared" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\winrt" -I"C:\Program Files
>> > (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\include"
>> > -I"C:\Program Files
>> >
>> (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\include\ia32"
>> -I"C:\Program
>> > Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files
>> > (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program
>> > Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program
>> > Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files
>> > (x86)\Windows Kits\8.1\include\shared" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\winrt" -I"C:\Program Files
>> > (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\include"
>> > -I"C:\Program Files
>> > (x86)\IntelSWTools\compilers_and_libraries\windows\daal\include"
>> > -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE"
>> > -I"C:\Program Files (x86)\Microsoft Visual Studio
>> > 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program Files (x86)\Windows
>> > Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows
>> > Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\shared" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows
>> > Kits\8.1\include\winrt" /Tcbuild\src.win32-3.5\fortranobject.c
>> > /Fobuild\temp.win32-3.5\Release\build\src.win32-3.5\fortranobject.obj
>> > could not find library 'dfftpack' in directories []
>> > could not find library 'fftpack' in directories []
>> >
>> > This has the /MT flag - so the fftpack stuff is being compiled for the
>> > static MSVC runtime.  However, at the linker stage just afterwards, it
>> > seems we actively prevent the static UCRT runtime (libucrt.lib), and
>> > instead force it to use the dynamic UCRT (ucrt.lib).  Am I understanding
>> > this correctly?
>> >
>> > C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.exe
>> > /nologo /INCREMENTAL:NO /LTCG /nodefaultlib:libucrt.lib ucrt.lib /DLL
>> >
>> > [snip]
>> >
>> > /LIBPATH:"C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86"
>> > dfftpack.lib fftpack.lib /EXPORT:PyInit__fftpack
>> >
>> build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpackmodule.obj
>> > build\temp.win32-3.5\Release\scipy\fftpack\src\zfft.obj
>> > build\temp.win32-3.5\Release\scipy\fftpack\src\drfft.obj
>> > build\temp.win32-3.5\Release\scipy\fftpack\src\zrfft.obj
>> > build\temp.win32-3.5\Release\scipy\fftpack\src\zfftnd.obj
>> >
>> build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\src\dct.obj
>> >
>> build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\src\dst.obj
>> > build\temp.win32-3.5\Release\build\src.win32-3.5\fortranobject.obj
>> > /OUT:build\lib.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.pyd
>> >
>> /IMPLIB:build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.lib
>> >     Creating library
>> >
>> build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.lib
>> > and object
>> >
>> build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.exp
>> > LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other
>> > libs; use /NODEFAULTLIB:library
>> > MSVCRT.lib(_chandler4gs_.obj) : error LNK2001: unresolved external
>> > symbol __except_handler4_common
>> > build\lib.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.pyd : fatal error
>> > LNK1120: 1 unresolved externals
>> >
>> > Best,
>> > Michael
>> >
>> > On Mon, Jan 18, 2016 at 5:03 PM Ralf Gommers <ralf.gommers at gmail.com
>> > <mailto:ralf.gommers at gmail.com>> wrote:
>> >
>> >     On Mon, Jan 18, 2016 at 11:29 PM, Michael Sarahan
>> >     <msarahan at gmail.com <mailto:msarahan at gmail.com>> wrote:
>> >
>> >         Greetings,
>> >
>> >         I'm bumping into a strange issue building SciPy 0.16.1 for
>> >         Python 3.5 with Visual Studio 2015.  The 64-bit build completes
>> >         successfully.  The 32-bit build, not so much.  It dies at
>> >         linking fftpack:
>> >
>> >         C:\Program Files (x86)\Microsoft Visual Studio
>> >         14.0\VC\BIN\link.exe /nologo /INCREMENTAL:NO /LTCG
>> >         /nodefaultlib:libucrt.lib ucrt.lib /DLL /MANIFEST:EMBED,ID=2
>> >         /MANIFESTUAC:NO /LIBPATH:C:\aroot\stage\libs
>> >         /LIBPATH:C:\aroot\stage\PCbuild\win32
>> >         /LIBPATH:build\temp.win32-3.5 /LIBPATH:C:\aroot\stage\libs
>> >         /LIBPATH:C:\aroot\stage\PCbuild\win32
>> >         /LIBPATH:build\temp.win32-3.5 /LIBPATH:"C:\Program Files
>> >         (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32_win"
>> >         /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio
>> >         14.0\VC\LIB" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual
>> >         Studio 14.0\VC\ATLMFC\LIB" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\10\lib\10.0.10150.0\ucrt\x86"
>> >         /LIBPATH:"C:\Program Files (x86)\Windows
>> >         Kits\NETFXSDK\4.6\lib\um\x86" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\8.1\lib\winv6.3\um\x86" /LIBPATH:"C:\Program
>> >         Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\lib\ia32\vc_mt"
>> >         /LIBPATH:"C:\Program Files
>> >         (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\lib\ia32"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\daal\lib\ia32_win"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32_win"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\lib\ia32_win\vc_mt"
>> >         /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio
>> >         14.0\VC\LIB" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual
>> >         Studio 14.0\VC\ATLMFC\LIB" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\10\lib\10.0.10150.0\ucrt\x86"
>> >         /LIBPATH:"C:\Program Files (x86)\Windows
>> >         Kits\NETFXSDK\4.6\lib\um\x86" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\8.1\lib\winv6.3\um\x86" /LIBPATH:"C:\Program
>> >         Files
>> >         (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32_win"
>> >         /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio
>> >         14.0\VC\LIB" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual
>> >         Studio 14.0\VC\ATLMFC\LIB" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\10\lib\10.0.10150.0\ucrt\x86"
>> >         /LIBPATH:"C:\Program Files (x86)\Windows
>> >         Kits\NETFXSDK\4.6\lib\um\x86" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\8.1\lib\winv6.3\um\x86" /LIBPATH:"C:\Program
>> >         Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\lib\ia32\vc_mt"
>> >         /LIBPATH:"C:\Program Files
>> >         (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\lib\ia32"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\daal\lib\ia32_win"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\compiler\lib\ia32_win"
>> >         /LIBPATH:"C:\Program Files
>> >
>>  (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\lib\ia32_win\vc_mt"
>> >         /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio
>> >         14.0\VC\LIB" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual
>> >         Studio 14.0\VC\ATLMFC\LIB" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\10\lib\10.0.10150.0\ucrt\x86"
>> >         /LIBPATH:"C:\Program Files (x86)\Windows
>> >         Kits\NETFXSDK\4.6\lib\um\x86" /LIBPATH:"C:\Program Files
>> >         (x86)\Windows Kits\8.1\lib\winv6.3\um\x86" dfftpack.lib
>> >         fftpack.lib /EXPORT:PyInit__fftpack
>> >
>>  build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpackmodule.obj
>> >         build\temp.win32-3.5\Release\scipy\fftpack\src\zfft.obj
>> >         build\temp.win32-3.5\Release\scipy\fftpack\src\drfft.obj
>> >         build\temp.win32-3.5\Release\scipy\fftpack\src\zrfft.obj
>> >         build\temp.win32-3.5\Release\scipy\fftpack\src\zfftnd.obj
>> >
>>  build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\src\dct.obj
>> >
>>  build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\src\dst.obj
>> >
>>  build\temp.win32-3.5\Release\build\src.win32-3.5\fortranobject.obj
>> >         /OUT:build\lib.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.pyd
>> >
>>  /IMPLIB:build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.lib
>> >             Creating library
>> >
>>  build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.lib
>> >         and object
>> >
>>  build\temp.win32-3.5\Release\build\src.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.exp
>> >         LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use
>> >         of other libs; use /NODEFAULTLIB:library
>> >         MSVCRT.lib(_chandler4gs_.obj) : error LNK2001: unresolved
>> >         external symbol __except_handler4_common
>> >         build\lib.win32-3.5\scipy\fftpack\_fftpack.cp35-win32.pyd :
>> >         fatal error LNK1120: 1 unresolved externals
>> >
>> >         Is this a problem with Intel's libraries linking with /MT rather
>> >         than /MD?  I haven't been able to find any /MT or /MD stuff in
>> >         the SciPy build stuff.
>> >
>> >         Pointers much appreciated.
>> >
>> >
>> >     The MT/MD flags should come from here:
>> >
>> https://github.com/numpy/numpy/blob/master/numpy/distutils/fcompiler/intel.py#L162
>> >     We made some changes recently, so it may depend on the version of
>> >     numpy you're building against.
>> >
>> >     Hope that helps,
>> >     Ralf
>> >
>> >     _______________________________________________
>> >     SciPy-User mailing list
>> >     SciPy-User at scipy.org <mailto:SciPy-User at scipy.org>
>> >     https://mail.scipy.org/mailman/listinfo/scipy-user
>> >
>> >
>> >
>> > _______________________________________________
>> > SciPy-User mailing list
>> > SciPy-User at scipy.org
>> > https://mail.scipy.org/mailman/listinfo/scipy-user
>> >
>> _______________________________________________
>> SciPy-User mailing list
>> SciPy-User at scipy.org
>> https://mail.scipy.org/mailman/listinfo/scipy-user
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20160119/3f22d39a/attachment.html>


More information about the SciPy-User mailing list