本文介绍了一个简单的 Python SWIG 错误问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 swig 运行 Python 来执行 C/C++.我正在运行教程这里,构建python模块".当我打电话时

I am trying to get Python running with swig to do C/C++. I am running the tutorial here, 'building a python module'. When I do the call

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 配置错误吗?我该如何度过这一关?

It actually does create an example.o file, but it doesn't work. I am using python2.5 not 2.1 as in the example, is this a problem? The error (everything else is just a 'warning') says something about wrong platform. This is a 64bit machine; is this a problem? Is my gcc configured wrong for my machine? How do I get past this?

更新:我仍然遇到问题.我如何实际实施此修复"?

UPDATE: I am still having problems. How do I actually implement this "fix"?

推荐答案

在 64 位 centos 上为 32 位 python 安装 python readline 时,我发现这个线程正在寻找相同LONGBIT"错误的答案.该链接没有直接答案,所以我不得不进一步搜索答案(对于经验丰富的 linux 用户/开发人员来说,这可能是直截了当的).为了将来参考,解决方案是通过在 CFLAGS 环境变量中使用-m32"来强制使用 32 位.

I found this thread looking for an answer for the same "LONGBIT" error while installing python readline for 32bit python on 64bit centos. The link doesn't have the direct answer, so I had to google further for the answer (which might be straight-forward for seasoned linux users/devs). For future reference, the solution is to force 32-bit by using "-m32" in CFLAGS environment variable.

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:

I then tried with 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

最新的错误是由于没有 32 位的 glibc-devel 包(感谢 此线程).我还必须安装 ncurses-devel.i386,然后通过 easy_install 并且 ipython 识别出它.直到我为了 ipython 开始工作之前,我的生活都被毁了.

The latest error is due to not having glibc-devel package for 32bit (thanks to this thread). I also had to install ncurses-devel.i386 and then easy_install went through and ipython recognized it. My life felt ruined until I got this working for the sake of 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

这篇关于一个简单的 Python SWIG 错误问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 05:52