Thread: Unable to build python extension with PGXS
Attempting to build a python extension, I'm getting: Undefined symbols for architecture x86_64: "_PyErr_Clear", referenced from: _PLyNdarray_FromDatum in pg_ndarray.o _PLyObject_To_ndarray in pg_ndarray.o "_PyImport_ImportModule", referenced from: _PLyNdarray_FromDatum in pg_ndarray.o _PLyObject_To_ndarray in pg_ndarray.o "_PyObject_CallFunction", referenced from: _PLyNdarray_FromDatum in pg_ndarray.o _PLyObject_To_ndarray in pg_ndarray.o "_PyObject_GetAttrString", referenced from: _PLyNdarray_FromDatum in pg_ndarray.o _PLyObject_To_ndarray in pg_ndarray.o "_PyString_AsString", referenced from: _PLyObject_To_ndarray in pg_ndarray.o "_PyString_FromStringAndSize", referenced from: _PLyNdarray_FromDatum in pg_ndarray.o "_PyString_Size", referenced from: _PLyObject_To_ndarray in pg_ndarray.o ld: symbol(s) not found for architecture x86_64 I've included $(python_includespec) in my Makefile: override CPPFLAGS := $(python_includespec) $(CPPFLAGS) Is there some other magic I need? Do I need to switch to using MODULE_big or something? -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com
On 1/12/16 10:04 PM, Jim Nasby wrote: > Attempting to build a python extension, I'm getting: > > Undefined symbols for architecture x86_64: > "_PyErr_Clear", referenced from: > _PLyNdarray_FromDatum in pg_ndarray.o > _PLyObject_To_ndarray in pg_ndarray.o > "_PyImport_ImportModule", referenced from: > _PLyNdarray_FromDatum in pg_ndarray.o > _PLyObject_To_ndarray in pg_ndarray.o > "_PyObject_CallFunction", referenced from: > _PLyNdarray_FromDatum in pg_ndarray.o > _PLyObject_To_ndarray in pg_ndarray.o > "_PyObject_GetAttrString", referenced from: > _PLyNdarray_FromDatum in pg_ndarray.o > _PLyObject_To_ndarray in pg_ndarray.o > "_PyString_AsString", referenced from: > _PLyObject_To_ndarray in pg_ndarray.o > "_PyString_FromStringAndSize", referenced from: > _PLyNdarray_FromDatum in pg_ndarray.o > "_PyString_Size", referenced from: > _PLyObject_To_ndarray in pg_ndarray.o > ld: symbol(s) not found for architecture x86_64 > > I've included $(python_includespec) in my Makefile: > > override CPPFLAGS := $(python_includespec) $(CPPFLAGS) > > Is there some other magic I need? Do I need to switch to using > MODULE_big or something? After some Screwing Around(TM), I figured out that the magic trick is to add the output of python-config --ldflags to LDFLAGS. I see we have a $(perl_embed_ldflags), should there be something similar for python? -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com
On 1/13/16 3:11 PM, Jim Nasby wrote: > On 1/12/16 10:04 PM, Jim Nasby wrote: >> Attempting to build a python extension, I'm getting: >> >> Undefined symbols for architecture x86_64: >> "_PyErr_Clear", referenced from: >> _PLyNdarray_FromDatum in pg_ndarray.o >> _PLyObject_To_ndarray in pg_ndarray.o In case anyone runs into this in the future, my eventual solution was https://github.com/decibel/PandaPost/blob/master/Makefile -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com