2009-03-15 19 views
8

Python'u C/C++ yapmak için swig ile çalıştırmaya çalışıyorum. here ders kitabını çalıştırıyorum, 'bir python modülü oluşturma'. ÇağrıyıÖnemsiz bir Python SWIG hata sorusu

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

yaptığınızda bir hata alıyorum:

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 

Aslında bir example.o dosyası oluşturmak yapar, ancak çalışmıyor. Örnekte olduğu gibi python2.5 değil 2.1 kullanıyorum, bu bir problem mi? Hata (her şey sadece bir 'uyarı') yanlış platform hakkında bir şey söylüyor. Bu bir 64bit makinesidir; bu bir sorun mu? Gcc makinem için yanlış yapılandırılmış mı? Bunu nasıl geçebilirim?

GÜNCELLEME: Hala sorun yaşıyorum. Bu "düzeltmeyi" gerçekte nasıl uygularım?

+0

hatasının muhtemelen, yazılım, 64 bit olmak üzere platform ile ilgilidir. python sürümü sorun değil. – Vasil

cevap

7

64bit centos üzerinde 32bit python için python readline'ı yüklerken aynı "LONGBIT" hatası için bir yanıt arayan bu iş parçacığını buldum. Bağlantının doğrudan cevabı yok. Bu nedenle, cevabın daha ileri gitmesi gerekiyordu (bu durum, deneyimli linux kullanıcıları/dev'leri için ileriye doğru olabilir). Gelecekte referans olması için çözüm, CFLAGS ortam değişkeninde "-m32" kullanarak 32-bit'i zorlamaktır.

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 

Sonra CFLAGS = -m32 ile çalıştı:

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 

son hata 32bit için (this thread sayesinde) glibc-geliştirici paketi olmamasından kaynaklanmaktadır. Ayrıca ncurses-devel.i386'yı yüklemek zorunda kaldım ve daha sonra easy_install geçti ve ipython bunu tanıdı. Hayatım ipython uğruna çalışana kadar hayatım mahvolmuştu.

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

Bir Python paketi yüklemeye çalışırken aynı hatayı aldım, ancak düzeltdim.
"LONG_BIT" hata oldu:

$ 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 

öneriyorsun gibi, Alex, benim makinenin ihtiyacı maç Python'un epdveya doğru sürümünü yüklemek zorunda kaldı ve ben yüklemek istedim paketin söyledi. Python'un koşarken paralel versiyonları vardı ve sanırım bu karışıklık ve hatanın nereden geldiğini gösteriyor. Enthought's Repository'a gidin ("Depoda oturum aç" -> Yükleyiciler) seçeneğini tıklayın ve doğru sürümü yükleyin.

Eski Python sürümlerini kaldırarak işleri temizlediğinizden emin olun (ya da sizin için ne yaptığını bilen birini sorun). Ardından, .cshrc yolunuzu yeni sürüme işaret edecek şekilde değiştirin ve dosyayı doğru şekilde gönderin. Bunu yaptıktan sonra problemim yoktu.

Bu soruların 4 yıl önce sorulduğunu anladım!

+2

4 yaşındaki bir soruya cevap vermekle ilgili bir sorun yok. OP uzun geçmiş olsa bile, cevap gelecekte arama yapan biri için yararlı olabilir. –

2

Bu iki parçayı iki kez, iki yıl arayla buldum, ikisi de libxml2 kaynağından yüklemeye çalışırken. Kitaplığın configure komut dosyası aslında hatayı düzeltmek yerine kullanılan bir --without-python seçeneğine sahiptir.

+0

sadece aynı sorunu yaşadı, teşekkürler –