带有--enable-shared的Python 3.1.1:不会构建任何扩展

gah*_*ooa 7 python mod-wsgi compilation python-3.x

简介:在RHEL 5.3 64位上构建Python 3.1 --enable-shared无法编译所有扩展.建立"正常"工作没有任何问题.

请注意,这个问题似乎模糊了编程和系统管理之间的界限.但是,我认为,因为它必须直接处理语言支持,并且它与支持编程过程非常相关,我将在此处交叉发布.另请参见:https://serverfault.com/questions/73196/python-3-1-1-with-enable-shared-will-not-build-any-extensions.谢谢!

问题:

在RHEL 5.3 64位上构建Python 3.1 --enable-shared无法编译所有扩展.建立"正常"工作没有任何问题.

我可以很好地构建python 3.1,但是当构建为共享库时,它会发出许多警告(见下文),并拒绝构建任何c基于模块的模块.尽管失败了,我仍然可以针对它构建mod_wsgi 3.0c5,并在apache下运行它.毋庸置疑,Python的功能大大减少了......

有趣的是,Python 3.2a0(来自svn)使用--enable-shared进行编译,并且mod_wsgi可以很好地编译它.但是当启动apache时,我得到:

Cannot load /etc/httpd/modules/mod_wsgi.so into server: /etc/httpd/modules/mod_wsgi.so: undefined symbol: PyCObject_FromVoidPtr

这个项目是一个长期项目,所以如果需要,我可以使用alpha质量软件.以下是有关该问题的更多详细信息.

主办:

  • 戴尔PowerEdge
  • 英特尔氙气灯
  • RHEL 5.3 64位
  • 没什么特别的"

建立:

  • Python 3.1.1源代码分发
  • 工作正常 ./configure
  • 不适用 ./configure --enable-shared

(export CFLAGS="-fPIC"已经完成)

输出


gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -IInclude -I./Include -fPIC -DPy_BUILD_CORE -c ./Modules/_weakref.c -o Modules/_weakref.o


building 'bz2' extension gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -I./Include -I/usr/local/include -IInclude -I/home/build/RPMBUILD/BUILD/Python-3.1.1 -c /home/build/RPMBUILD/BUILD/Python-3.1.1/Modules/bz2module.c -o build/temp.linux-x86_64-3.1/home/build/RPMBUILD/BUILD/Python-3.1.1/Modules/bz2module.o gcc -pthread -shared -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes build/temp.linux-x86_64-3.1/home/build/RPMBUILD/BUILD/Python-3.1.1/Modules/bz2module.o -L/usr/local/lib -L. -lbz2 -lpython3.1 -o build/lib.linux-x86_64-3.1/bz2.so /usr/bin/ld: /usr/local/lib/libpython3.1.a(abstract.o): relocation R_X86_64_32 against 'a local symbol' can not be used when making a shared object; recompile with -fPIC


Failed to build these modules:
_bisect            _codecs_cn         _codecs_hk
_codecs_iso2022    _codecs_jp         _codecs_kr
_codecs_tw         _collections       _csv
_ctypes            _ctypes_test       _curses
_curses_panel      _dbm               _elementtree
_gdbm              _hashlib           _heapq
_json              _lsprof            _multibytecodec
_multiprocessing   _pickle            _random
_socket            _sqlite3           _ssl
_struct            _testcapi          array
atexit             audioop            binascii
bz2                cmath              crypt
datetime           fcntl              grp
itertools          math               mmap
nis                operator           ossaudiodev
parser             pyexpat            readline
resource           select             spwd
syslog             termios            time
unicodedata        zlib
Run Code Online (Sandbox Code Playgroud)

Mar*_*wis 6

您的构建环境有问题.它正在从中获取一个libpython3.1.a /usr/local/lib; 这会混淆错误消息.它尝试链接到那个失败的库 - 但是,它应该首先尝试它,因为它应该使用它刚刚构建的libpython.我建议不要使用Python 3.1安装/usr/local.

您没有在输出中显示是否在构建树中创建了libpython3.1.so.1.0; 重要的是要弄清楚它是否存在,它是如何链接的,以及它导出的符号.