Compiling python extension on amd64 for 32 bit

Mathias Waack M.Waack at gmx.de
Fri May 25 06:09:38 EDT 2007


After switching my development environment to 64 bit I've got a problem with
a python extension for a 32 bit application. Compiling the app under Linux
results in the following error:

g++ -m32 -Wall -g -O2  -I. -Idb -DPYTHON=25 -o mappy.o -c mappy.cpp
In file included from /usr/include/python2.5/Python.h:57,
                 from mappy.cpp:29:
/usr/include/python2.5/pyport.h:732:2: error: #error "LONG_BIT definition
appears wrong for platform (bad gcc/glibc config?)."

My gcc is:

Using built-in specs.
Target: x86_64-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr 
--with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man 
--libdir=/usr/lib64 --libexecdir=/usr/lib64 
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada 
--enable-checking=release 
--with-gxx-include-dir=/usr/include/c++/4.1.2 
--enable-ssp --disable-libssp 
--disable-libgcj --with-slibdir=/lib64 
--with-system-zlib --enable-shared --enable-__cxa_atexit 
--enable-libstdcxx-allocator=new --program-suffix=-4.1 
--enable-version-specific-runtime-libs --without-system-libunwind --with-cpu=generic 
--host=x86_64-suse-linux
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)

So I've checked this magic LONG_BIT define: 

#:/tmp cat t.c
#include <stdio.h>
#include <bits/xopen_lim.h>

int main()
{
  printf("%d\n",sizeof(long));
  printf("%d\n",LONG_BIT);
  return 0;
}
#:/tmp gcc t.c
#:/tmp ./a.out
8
64
#:/tmp gcc -m32 t.c
#:/tmp ./a.out
4
32

Ok, thats fine. So why is python complaining? Or even more interesting, what
do I have to do to compile the code?

Mathias



More information about the Python-list mailing list