Python 2.2.1 vs. gcc 3.1?

Martin v. Löwis loewis at informatik.hu-berlin.de
Fri Jun 7 15:44:45 EDT 2002


Andrew Koenig <ark at research.att.com> writes:

> ImportError: ld.so.1: ./python: fatal: relocation error: file /tmp/build-python/Python-2.2.1/build/lib.solaris-2.8-sun4u-2.2/struct.so: symbol PyString_Type: referenced symbol not found
> 
> So apparently the shared libraries are not being built properly.
> 
> Any more ideas?

The typical cause of this problem is that you are using GNU binutils,
in which case the compiler needs the option -Wl,--export-dynamic when
linking the Python executable. 

Now, there is machinery in configure.in to determine whether this flag
is needed. Traditionally (up to Python 2.2.1), this machinery invokes
'gcc -Xlinker -V' and expects to find 'BFD' in its output if it is GNU
ld, such as

GNU ld version 2.11.2 (with BFD 2.11.2)
  Supported emulations:
   elf32_sparc
   elf64_sparc

Starting with binutils 2.12, GNU ld stops printing BFD in its -V
output, so that this detection mechanism fails.

This has been fixed in the CVS, by checking presence of the
--export-dynamic linker option directly (configure.in 2.288.6.5, for
the 2.2 branch).

Regards,
Martin



More information about the Python-list mailing list