[Pyrex] Newbie Question (problems with GCC)

Voidspace mike at pcblokes.com
Fri Apr 16 09:54:59 CEST 2004


In actual the reply from Greg might contain the answer to my further 
difficulties :-)

However - below are the resutls of my *failed* experiments last 
night.............

I thought I'd followed the instructions in :
http://randomthoughts.vandorp.ca/syncato/WK/blog/758_Simple_instructions_to_compile_python_C_extensions_in_windows.item
to the letter !
(Thanks for the replies by the way - both Phillip and Greg).

Now the 'random thoughts' page says that after installing MinGW 
successfully and adding a disutils.cfg file (which didn't exist 
already).... I ought to be able to compile extensions from disutils 
automagically.................

However it seems that maybe :

  python setup.py build_ext --compiler=mingw32

is the right way instead.... (I'll try it when I get home)

I print the resutls I got below as they seem suspiciously wrong anyway..........
(When attempting to compile primes.pyx )

The setup.py I used was :
from distutils.core import setup
from distutils.extension import Extension
from Pyrex.Distutils import build_ext
setup(
  name = "PyrexGuide",
  ext_modules=[ 
    Extension("mymodule", ["primes.pyx"])
    ],
  cmdclass = {'build_ext': build_ext}
)

At first I just tried setup.py build --inplace (as per one of the tutorials)
but this was invalid options... so I tried just "setup build" with the following results.

After that (as you will see) I tried the method in the tutorial  
suggested for Linux, calling gcc directly - with suitably obscure 
results....... (I seemed to get a 'primes.o' file - but no further).

###########
ATTEMPT 1

F:\Python Projects\c>setup.py build
running build
running build_ext
error: Python was built with version 6 of Visual Studio, and extensions 
need to
be built with the same version of the compiler, but it isn't installed.

F:\Python Projects\c>



#####################

ATTEMPT 2

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

F:\Python Projects\c>pyrexc.py primes.pyx

F:\Python Projects\c>gcc -c -fPIC -IC:\Python23\include primes.c
cc1.exe: warning: -fPIC ignored for target (all code is position 
independent)

F:\Python Projects\c>gcc -shared primes.o -o primes.so
primes.o(.text+0x5f):primes.c: undefined reference to 
`_imp__PyArg_ParseTupleAnd
Keywords'
primes.o(.text+0x7c):primes.c: undefined reference to `_imp___Py_NoneStruct'
primes.o(.text+0x94):primes.c: undefined reference to `_imp__PyList_New'
primes.o(.text+0x1f5):primes.c: undefined reference to 
`_imp__PyObject_GetAttrSt
ring'
primes.o(.text+0x22f):primes.c: undefined reference to 
`_imp__PyInt_FromLong'
primes.o(.text+0x268):primes.c: undefined reference to `_imp__PyTuple_New'
primes.o(.text+0x2c4):primes.c: undefined reference to 
`_imp__PyObject_CallObjec
t'
primes.o(.text+0x4e3):primes.c: undefined reference to 
`_imp__Py_InitModule4'
primes.o(.text+0x4fa):primes.c: undefined reference to 
`_imp__PyImport_AddModule
'
primes.o(.text+0x51d):primes.c: undefined reference to 
`_imp__PyObject_SetAttrSt
ring'
primes.o(.text+0x5a2):primes.c: undefined reference to 
`_imp__PyString_FromStrin
g'
primes.o(.text+0x5c0):primes.c: undefined reference to 
`_imp__PyString_FromStrin
g'
primes.o(.text+0x5e1):primes.c: undefined reference to 
`_imp__PyModule_GetDict'
primes.o(.text+0x5fe):primes.c: undefined reference to `_imp__PyTuple_New'
primes.o(.text+0x61e):primes.c: undefined reference to 
`_imp__PyString_FromStrin
g'
primes.o(.text+0x662):primes.c: undefined reference to `_imp__PyCode_New'
primes.o(.text+0x682):primes.c: undefined reference to 
`_imp__PyThreadState_Get'

primes.o(.text+0x68d):primes.c: undefined reference to `_imp__PyFrame_New'
primes.o(.text+0x6b4):primes.c: undefined reference to 
`_imp__PyTraceBack_Here'

F:\Python Projects\c>

Regrads,


Fuzzy

http://www.voidspace.org.uk/atlantibots/pythonutils.html



Greg Ewing wrote:

>Michael <mike at pcblokes.com>:
>
>  
>
>>What's worse - I will need to learn the magic compiler chain
>>incantations that I have avoided for so long.
>>    
>>
>
>You can avoid most of that by using distutils to build your
>extension. Pyrex comes with a distutils extension that knows about
>.pyx files.
>
>  
>
>>I've got the MinGW package with gcc - which is probably the *best*
>>free compiler - although I understand there are issues with easily
>>using it for pyrex/win32.
>>    
>>
>
>Distutils can use MinGW. You just need to say
>
>  python setup.py build_ext --compiler=mingw32
>
>The only tricky part is that you need to use a couple of command-line
>tools to create a MinGW version of the Python DLL for linking the
>extension against. There are instructions for doing this in the Python
>distutils documentation. You only need to do it once for any given
>Python version.
>
>  
>
>>Has anyone any experience of doing this ?
>>    
>>
>
>Yes, I've done it myself recently, and it works fine.
>
>  
>
>>Can compiled extensions be distributed for use by people without MinGW
>>*and* without dependency on an extra dll as a result of using this
>>method ?
>>    
>>
>
>Yes.
>
>  
>
>>Will my resulting binary be free of GPL restrictions ?
>>    
>>
>
>Yes.
>
>Greg Ewing, Computer Science Dept, +--------------------------------------+
>University of Canterbury,	   | A citizen of NewZealandCorp, a	  |
>Christchurch, New Zealand	   | wholly-owned subsidiary of USA Inc.  |
>greg at cosc.canterbury.ac.nz	   +--------------------------------------+
>
>_______________________________________________
>Pyrex mailing list
>Pyrex at lists.copyleft.no
>http://lists.copyleft.no/mailman/listinfo/pyrex
>
>
>
>  
>

-- 

http://www.Voidspace.org.uk 
The Place where headspace meets cyberspace. Online resource site - covering science, technology, computing, cyberpunk, psychology, spirituality, fiction and more. 

---
http://www.atlantibots.org.uk
http://groups.yahoo.com/group/atlantis_talk/
Atlantibots - stomping across the worlds of Atlantis.
Building with Python - programming language that rules the world.
---
http://www.fuchsiashockz.co.uk   
http://groups.yahoo.com/group/void-shockz
---

Everyone has talent. What is rare is the courage to follow talent
 to the dark place where it leads. -Erica Jong
Ambition is a poor excuse for not having sense enough to be lazy.
         -Milan Kundera







More information about the Pyrex mailing list