2009-03-15 10 views
8

Ich versuche Python mit swig laufen zu C/C++ zu tun. Ich führe das Tutorial here, "ein Python-Modul erstellen". Als ich den Anruf tunEine triviale Python SWIG Fehler Frage

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

Ich erhalte eine Fehlermeldung:

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 

Es macht tatsächlich eine example.o-Datei erstellen, aber es funktioniert nicht. Ich benutze python2.5 nicht 2.1 wie im Beispiel, ist das ein Problem? Der Fehler (alles andere ist nur eine "Warnung") sagt etwas über eine falsche Plattform aus. Dies ist eine 64-Bit-Maschine; Ist das ein Problem? Ist mein gcc für mein Gerät falsch konfiguriert? Wie komme ich daran vorbei?

UPDATE: Ich habe immer noch Probleme. Wie implementiere ich dieses "Update"?

+0

Der Fehler ist höchstwahrscheinlich damit verbunden, dass Ihre Plattform 64 Bit groß ist. Die Python-Version ist kein Problem. – Vasil

Antwort

7

Ich fand diesen Thread auf der Suche nach einer Antwort für die gleiche "LONGBIT" Fehler bei der Installation von Python Readline für 32bit Python auf 64bit Centos. Der Link hat nicht die direkte Antwort, also musste ich weiter googlen für die Antwort (die für erfahrene Linux-Benutzer/Entwickler einfach sein könnte). Zukünftige Referenz ist die Lösung, 32-Bit zu erzwingen, indem Sie "-m32" in CFLAGS-Umgebungsvariable verwenden.

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 

Ich habe dann versucht, mit 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 

Der letzte Fehler für 32bit (dank this thread) nicht glibc-devel Paket mit gebührt. Ich musste auch ncurses-devel.i386 installieren und dann ging easy_install durch und ipython erkannte es. Mein Leben fühlte sich ruiniert an, bis ich das für ipython funktionierte.

2

Ich hatte den gleichen Fehler beim Versuch, ein Python-Paket zu installieren, aber behoben.
Der „LONG_BIT“ Fehler:

$ 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 

Wie Sie vorschlagen, Alex, ich habe die richtige Version von Python epd installieren hatte die Forderung meiner Maschine und die des Pakets übereinstimmen ich installieren wollte. Es gab parallele Versionen von Python und ich denke, dass hier die Verwirrung und der Fehler herrührten. Gehen Sie zu Enthought's Repository (klicken Sie auf "Anmelden im Repository" -> Installer) und installieren Sie die korrekte Version.

Stellen Sie sicher, dass Sie die Dinge säubern (oder fragen Sie jemanden, der weiß, was sie tun, um dies für Sie zu tun), indem Sie die alten Python-Versionen entfernen. Ändern Sie dann natürlich Ihren .cshrc-Pfad, um auf die neue Version zu verweisen und die Datei korrekt zu erstellen. Ich hatte keine Probleme, nachdem ich das getan habe.

Ich weiß, diese Frage wurde vor 4 Jahren gestellt!

+2

Nichts ist falsch mit der Beantwortung einer 4 Jahre alten Frage. Selbst wenn das OP längst vorbei ist, könnte die Antwort für jemanden nützlich sein, der in Zukunft eine Suche durchführt. –

2

Ich fand diesen Thread tatsächlich zweimal, ein paar Jahre auseinander, beide beim Versuch, libxml2 aus der Quelle zu installieren. Das configure Skript der Bibliothek hat tatsächlich eine --without-python Option, die ich anstelle des Fehlers verwendet habe.

+0

hatte gerade das gleiche Problem, danke –