Тривиальный вопрос об ошибке Python SWIG - PullRequest
8 голосов
/ 15 марта 2009

Я пытаюсь запустить Python с помощью swig для работы с C / C ++. Я запускаю учебник здесь , «Создание модуля Python». Когда я звоню

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

Я получаю сообщение об ошибке:

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

На самом деле он создает файл example.o, но он не работает. Я использую python2.5, а не 2.1, как в примере, это проблема? Ошибка (все остальное - просто «предупреждение») говорит о неправильной платформе. Это 64-битная машина; это проблема? Мой gcc настроен неправильно для моей машины? Как мне пройти это?

ОБНОВЛЕНИЕ: У меня все еще есть проблемы. Как мне на самом деле реализовать это «исправление»?

Ответы [ 3 ]

7 голосов
/ 26 мая 2010

Я обнаружил, что этот поток ищет ответ на ту же ошибку "LONGBIT" при установке python readline для 32-битного python на 64-битных центонах. Ссылка не имеет прямого ответа, поэтому мне пришлось искать ответ в Google (что может быть просто для опытных пользователей / разработчиков Linux). Для дальнейшего использования решение состоит в том, чтобы принудительно использовать 32-битную версию с помощью «-m32» в переменной среды 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

Я тогда попробовал с 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

Последняя ошибка связана с отсутствием пакета glibc-devel для 32-битной системы (благодаря этой теме ). Я также должен был установить ncurses-devel.i386, а затем easy_install прошел и ipython распознал его. Моя жизнь чувствовала себя разрушенной, пока я не начал работать ради 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 голосов
/ 30 октября 2013

Я обнаружил эту ветку дважды, с интервалом в пару лет, когда пытался установить libxml2 из исходного кода. Скрипт библиотеки configure на самом деле имеет параметр --without-python, который я использовал вместо того, чтобы пытаться исправить ошибку.

2 голосов
/ 31 июля 2013

У меня была такая же ошибка при попытке установить пакет Python, но я исправил ее.
Ошибка «LONG_BIT»:

$ 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

Как вы предлагаете, Алекс, мне пришлось установить правильную версию epd Python, соответствующую требованиям моей машины и пакета, который я хотел установить. Были запущены параллельные версии Python, и я думаю, что именно из-за этого возникла путаница и ошибка. Перейдите в Репозиторий Enthought (нажмите «Войти в репозиторий» -> Установщики) и установите правильную версию.

Убедитесь, что вы все очистите (или попросите кого-нибудь, кто знает, что они делают, сделать это для вас), удалив старые версии Python. Затем, конечно, измените ваш путь .cshrc, чтобы он указывал на новую версию и правильно поставил файл. После этого у меня не было проблем.

Я понимаю, что этот вопрос задавали 4 года назад!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...