Una pregunta de error SWIG de Python trivial

Estoy tratando de hacer que Python se ejecute con swig para hacer C / C ++. Estoy ejecutando el tutorial aquí , ‘construyendo un módulo python’. Cuando hago la llamada

gcc -c example.c example_wrap.c -I /my_correct_path/python2.5 

Me sale un error:

 my_correct_path/python2.5/pyport.h:761:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." example_wrap.c: In function 'SWIG_Python_ConvertFunctionPtr': example_wrap.c:2034: warning: initialization discards qualifiers from pointer target type example_wrap.c: In function 'SWIG_Python_FixMethods': example_wrap.c:3232: warning: initialization discards qualifiers from pointer target type 

Realmente crea un archivo example.o, pero no funciona. Estoy usando python2.5 no 2.1 como en el ejemplo, ¿es esto un problema? El error (todo lo demás es solo una ‘advertencia’) dice algo acerca de la plataforma incorrecta. Esta es una máquina de 64 bits; ¿es esto un problema? ¿Mi gcc está mal configurado para mi máquina? ¿Cómo puedo pasar esto?

ACTUALIZACIÓN: Todavía estoy teniendo problemas. ¿Cómo implemento este “arreglo”?

Encontré este hilo buscando una respuesta para el mismo error “LONGBIT” al instalar python readline para 32bit python en 64bit centos. El enlace no tiene la respuesta directa, así que tuve que buscar más en Google para la respuesta (lo que podría ser sencillo para los usuarios / devs de Linux experimentados). Para futuras referencias, la solución es forzar 32 bits usando “-m32” en la variable de entorno CFLAGS.

 bash-3.2$ easy_install readline Searching for readline Reading http://pypi.python.org/simple/readline/ Reading http://www.python.org/ Best match: readline 2.6.4 Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar.gz#md5=7568e8b78f383443ba57c9afec6f4285 Processing readline-2.6.4.tar.gz Running readline-2.6.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-mqr9wH/readline-2.6.4/egg-dist-tmp-p3apfF In file included from /usr/local/python2.6/include/python2.6/Python.h:58, from Modules/readline.c:8: /usr/local/python2.6/include/python2.6/pyport.h:685:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." error: Setup script exited with error: command 'gcc' failed with exit status 1 

Entonces intenté con CFLAGS = -m32:

 bash-3.2$ CFLAGS=-m32 easy_install readline Searching for readline Reading http://pypi.python.org/simple/readline/ Reading http://www.python.org/ Best match: readline 2.6.4 Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar.gz#md5=7568e8b78f383443ba57c9afec6f4285 Processing readline-2.6.4.tar.gz Running readline-2.6.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-uauVci/readline-2.6.4/egg-dist-tmp-YY0tQa In file included from /usr/include/features.h:352, from /usr/include/limits.h:27, from /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/limits.h:122, from /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/syslimits.h:7, from /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/limits.h:11, from /usr/local/python2.6/include/python2.6/Python.h:19, from Modules/readline.c:8: /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory error: Setup script exited with error: command 'gcc' failed with exit status 1 

El último error se debe a no tener el paquete glibc-devel para 32 bits (gracias a este hilo ). También tuve que instalar ncurses-devel.i386 y luego easy_install se ejecutó e ipython lo reconoció. Mi vida se sintió arruinada hasta que conseguí este trabajo por el bien de ipython.

 bash-3.2$ CFLAGS=-m32 easy_install readline Searching for readline Reading http://pypi.python.org/simple/readline/ Reading http://www.python.org/ Best match: readline 2.6.4 Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar.gz#md5=7568e8b78f383443ba57c9afec6f4285 Processing readline-2.6.4.tar.gz Running readline-2.6.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dHly4D/readline-2.6.4/egg-dist-tmp-oIEDYl Adding readline 2.6.4 to easy-install.pth file Installed /home/hari/bin/python/lib/python2.6/site-packages/readline-2.6.4-py2.6-linux-x86_64.egg Processing dependencies for readline Finished processing dependencies for readline 

Tuve el mismo error al intentar instalar un paquete de Python, pero lo arreglé.
El error “LONG_BIT” fue:

 $ easy_install astropy /my_path/epd/epd-7.3-2-rh5-x86/include/python2.7/pyport.h:849:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." error: Setup script exited with error: command 'gcc' failed with exit status 1 

Como sugieres, Alex, tuve que instalar la versión correcta de epd de Python para que coincidiera con el requisito de mi máquina y la del paquete que quería instalar. Había versiones paralelas de Python ejecutándose y creo que aquí es de donde vino la confusión y el error. Vaya al repository de Enthought (haga clic en “Iniciar sesión en el repository” -> Instaladores) e instale la versión correcta.

Asegúrese de limpiar las cosas (o pregunte a alguien que sepa lo que están haciendo para que haga esto por usted) eliminando las antiguas versiones de Python. Luego, por supuesto, cambie la ruta .cshrc para que apunte a la nueva versión y obtenga el archivo correctamente. No tuve problemas después de hacer esto.

¡Me doy cuenta de que esta pregunta fue hecha hace 4 años!

De hecho, encontré este hilo dos veces, con un par de años de diferencia, ambos al intentar instalar libxml2 desde la fuente. El script de configure la biblioteca en realidad tiene una opción --without-python , que utilicé en lugar de intentar corregir el error.