Problem building python 2.7 with --enable-shared
Thomas Jollans
thomas at jollybox.de
Thu Sep 16 14:12:38 EDT 2010
On Thursday 16 September 2010, it occurred to Marten Lehmann to exclaim:
> Hello,
>
> I've build python 2.7 successfully by just calling configure, make and
> make install. But to use python within PostgreSQL, I need to built
> python with --enable-shared.
>
> I tried to do so (configure --enable-shared), but I see these lines
> several times in the log (but compiling continues):
Did you start with a clean source tree? If you just reconfigured and called
make again in the source tree where you already had built Python, make will
just re-use the old object files, which would be built without -fPIC and
whatever other options are required for the shared library linking to work.
>
> /usr/bin/ld: /test/python/lib/libpython2.7.a(abstract.o): relocation
> R_X86_64_32 against `a local symbol' can not be used when making a
> shared object; recompile with -fPIC
> /test/python/lib/libpython2.7.a: could not read symbols: Bad value
> collect2: ld returned 1 exit status
If you get this when building from a fresh source tree, I can't explain why
this might happen, but, again, starting afresh, this time adding -fPIC to the
CFLAGS, may work. But I expect that the configure script, or makefile, or
libtool, or whatever, should do this, hence my guess that maybe you're using
leftover object files.
(hint: make clean)
>
> Later, the compiling process ends completely:
>
> PYTHONPATH=/var/tmp/vrmd-python2-root/test/python/lib/python2.7
> LD_LIBRARY_PATH=/usr/src/redhat/BUILD/Python-2.7: \
> ./python -Wi -tt
> /var/tmp/vrmd-python2-root/test/python/lib/python2.7/compileall.py \
> -d /test/python/lib/python2.7 -f \
> -x
> 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
> /var/tmp/vrmd-python2-root/test/python/lib/python2.7
> Traceback (most recent call last):
> File
> "/var/tmp/vrmd-python2-root/test/python/lib/python2.7/compileall.py",
> line 17, in <module>
> import struct
> File
> "/var/tmp/vrmd-python2-root/test/python/lib/python2.7/struct.py", line
> 1, in <module>
> from _struct import *
> ImportError: No module named _struct
> make: *** [libinstall] Error 1
>
> Any ideas, what I have done wrong?
>
> Kind regards
> Marten
More information about the Python-list
mailing list