[Numpy-discussion] mingw-w64 tutorial ?

Sebastian Haase seb.haase at gmail.com
Mon Aug 23 01:07:45 EDT 2010


On Sun, Aug 22, 2010 at 9:41 AM, Sebastian Haase <seb.haase at gmail.com> wrote:
> On Sun, Aug 22, 2010 at 8:40 AM, Sebastian Haase <seb.haase at gmail.com> wrote:
>> On Sun, Aug 22, 2010 at 8:16 AM, Sebastian Haase <seb.haase at gmail.com> wrote:
>>> On Sun, Aug 22, 2010 at 3:39 AM, Sebastian Haase <seb.haase at gmail.com> wrote:
>>>> On Sun, Aug 22, 2010 at 12:02 AM, Christoph Gohlke <cgohlke at uci.edu> wrote:
>>>>>
>>>>>
>>>>> On 8/21/2010 2:37 PM, Sebastian Haase wrote:
>>>>>> On Sat, Aug 21, 2010 at 11:29 PM, Christoph Gohlke<cgohlke at uci.edu>  wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 8/21/2010 1:44 PM, Sebastian Haase wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> this is somewhat OT for this list, but since I know that David and
>>>>>>>> many others here have lot's of experience compiling C extensions I
>>>>>>>> thought I could just ask:
>>>>>>>> Looking at
>>>>>>>> http://sourceforge.net/projects/mingw-w64/files/
>>>>>>>> I did not know (even after reading the FAQ) which file to download and
>>>>>>>> how things would eventually work.
>>>>>>>>
>>>>>>>> I have a 64bit windows 7 installed, and got many precompiled packages
>>>>>>>> for amd64 Python 2.7 from
>>>>>>>> http://www.lfd.uci.edu/~gohlke/pythonlibs/
>>>>>>>> (thanks to  Christoph Gohlke for all the work)
>>>>>>>> But now I have some C++ extensions on my own, and know how build them
>>>>>>>> using cygwin -- but that would only produce 32bit modules and should
>>>>>>>> be unusable.
>>>>>>>>
>>>>>>>> So, the question is if someone has or knows of some tutorial about how
>>>>>>>> to go about this - step by step. This info could maybe even go the
>>>>>>>> scipy wiki....
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Sebastian Haase
>>>>>>>
>>>>>>>
>>>>>>> Hi Sebastian,
>>>>>>>
>>>>>>> I am not aware of such a tutorial. There's some information at
>>>>>>> <http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport>
>>>>>>>
>>>>>>> I did not have good experience last time (about a year ago) I tried
>>>>>>> mingw-w64. Occasional crashes during compilation and at runtime.
>>>>>>> Probably that has changed. At least you have to create the missing
>>>>>>> libpython and libmsvcr90 libraries from the dlls and make libmsvcr90 the
>>>>>>> default crt.
>>>>>>>
>>>>>>> You probably know that the "free" Windows 7 Platform SDK can be used to
>>>>>>> build Python>=2.6 extensions written in C89.
>>>>>>> <http://mattptr.net/2010/07/28/building-python-extensions-in-a-modern-windows-environment/>
>>>>>>>
>>>>>>> --
>>>>>> Hi Christoph,
>>>>>>
>>>>>> I did not exactly know this - thanks for the info (I knew about
>>>>>> something called Visual Studio Express 2003- but that only
>>>>>> works/worked for Python 2.5, I think...)
>>>>>
>>>>> You can use Visual Studio Express 2008 for building 32 bit extensions
>>>>> for Python >=2.6.
>>>>>
>>>>>>
>>>>>> Rephrasing my original question: Is the mingw-w64 at all "easy" by now
>>>>>
>>>>> Don't know. David Cournapeau probably has the most experience.
>>>>>
>>>>> http://bugs.python.org/issue4709
>>>>> http://www.equation.com/servlet/equation.cmd?call=fortran
>>>>>
>>>>>> ? How about cross compiling to 64bit Windows from a 32bit Ubuntu (that
>>>>>> I could easily run on virtualbox) ?
>>>>>
>>>>> I am also interested in cross compiling on Ubuntu but have not found the
>>>>> time to get started. The IOCBio project cross-compiles their 32 bit
>>>>> extensions on Linux
>>>>> <http://code.google.com/p/iocbio/wiki/BuildWindowsInstallersOnLinux>.
>>>>> But as you can see they use Wine and Mingw...
>>>>>
>>>>>>
>>>>>> (But I'm not apposed at all to the "free" Windows 7 Platform SDK, so
>>>>>> I'll look into that -- giant download !?)
>>>>>
>>>>> About one GB.
>>>>>
>>>>>>
>>>> Do you know if that contains a C++ compiler ?  The first page before
>>>> it starts the actual download has "Visual C++ Compilers" grayed out
>>>> ... !?
>>>>
>>>> -Sebastian
>>>>
>>> Ok, apparently I had to install the "dot NET Framework 4" from
>>> http://msdn.microsoft.com/en-us/netframework/aa569263.aspx
>>> first, before then the C++ could be installed.
>>> But now setup.py still complains:
>>>       error: Unable to find vcvarsall.bat
>>> and I think it is looking for
>>> C:\Program Files (x86)\Microsoft Visual Studio 9.0
>>> while that file got installed in
>>> C:\Program Files (x86)\Microsoft Visual Studio 10.0
>>> I don't know how to get the "log.debug" messages from the setup.py
>>> script activated...
>>> ?
>>
>> I got the debug out by adding a "-d"
>> \Python27\python.exe setup.py -v build
>> (even though setup.py --help  states that --verbose should be already
>> the default, well...)
>>
>> Then I mentioned the environment variable %VS90COMNTOOLS%
>> which I then set to
>> $$>set VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
>>
>> But now I'm getting a traceback:
>>  File "C:\Python27\lib\distutils\msvc9compiler.py", line 469, in compile
>>    self.initialize()
>>  File "C:\Python27\lib\distutils\msvc9compiler.py", line 379, in initialize
>>    vc_env = query_vcvarsall(VERSION, plat_spec)
>>  File "C:\Python27\lib\distutils\msvc9compiler.py", line 295, in
>> query_vcvarsall
>>    raise ValueError(str(list(result.keys())))
>> ValueError: [u'path']
>>
>> Well, still trying ....
>> Cheers,
>> Sebastian
>>
> Now, I renamed the file
> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
> (as mentioned in
> http://mattptr.net/2010/07/28/building-python-extensions-in-a-modern-windows-environment/)
> to
> vcvars64.bat
> and moved it to
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
>
> The compiler races through and I end up getting linker problems:
> LINK : error LNK2001: unresolved external symbol init_sebmodule
>
So this last linker error was fixed by changing my setup.py to use
_seb instead of _sebmodule as external extension.
All seems to work now -- with the .NET 4 and VS 10.
If it was binding to the wrong CRT version, I cannot see any problem yet.
(I did set DISTUTILS_USE_SDK and MSSdk either, I mostly just followed
the referenced site http://mattptr...
and did the modification I described)
My extensions implement simple numeric routines and some OpenGL code.

Thanks,
Sebastian



More information about the NumPy-Discussion mailing list