2009-03-15 14 views
8

Estoy tratando de ejecutar Python con swig para hacer C/C++. Estoy ejecutando el tutorial here, 'construyendo un módulo python'. Cuando hago la llamadaUna pregunta trivial de error de SWIG de Python

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

consigo 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 

En realidad, sí 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á configurado incorrecto para mi máquina? ¿Cómo puedo pasar esto?

ACTUALIZACIÓN: Todavía tengo problemas. ¿Cómo implemento este "arreglo"?

+0

es probable que el error esté relacionado con que su plataforma sea de 64 bits. la versión de Python no es un problema. – Vasil

Respuesta

7

Encontré este hilo buscando una respuesta para el mismo error "LONGBIT" al instalar la lectura de Python para Python de 32 bits en centos de 64 bits. El enlace no tiene la respuesta directa, por lo que tuve que buscar en Google la respuesta (lo que podría ser sencillo para usuarios experimentados de linux/desarrolladores). Para referencia futura, la solución es forzar 32 bits utilizando "-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 

Luego trató 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 es debido a no tener paquete glibc-devel de 32 bits (gracias a this thread). También tuve que instalar ncurses-devel.i386 y luego easy_install pasó e ipython lo reconoció. Mi vida se sintió arruinada hasta que conseguí que esto funcionara por 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 
2

Tuve el mismo error al intentar instalar un paquete de Python, pero lo solucioné.
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 usted sugiere, Alex, tuvo que instalar la versión correcta de EPD de Python para que coincida con el requisito de mi máquina y el del paquete que quería instalar. Hubo versiones paralelas de Python ejecutándose y creo que de ahí viene la confusión y el error. Vaya a Enthought's Repository (haga clic en "Iniciar sesión en el repositorio" -> Instaladores) e instale la versión correcta.

Asegúrate de limpiar todo (o pide a alguien que sepa lo que están haciendo para que lo haga) quitando las versiones anteriores de Python. Luego, por supuesto, cambie su ruta .cshrc para que apunte a la nueva versión y procese el archivo correctamente. No tuve problemas después de hacer esto.

¡Me doy cuenta de que esta pregunta se hizo hace 4 años!

+2

No hay nada de malo en responder una pregunta de 4 años. Incluso si el OP ya pasó, la respuesta podría ser útil para alguien que hace una búsqueda en el futuro. –

2

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

+0

acaba de tener el mismo problema, gracias –

Cuestiones relacionadas