Резюме: При сборке Python 3.1 на 64-битной RHEL 5.3 с --enable-shared
не удается скомпилировать все расширения. Сборка "нормальная" работает нормально, без проблем.
Обратите внимание , что этот вопрос может показаться стирающим грань между программированием и системным администрированием. Тем не менее, я считаю, что, поскольку он имеет непосредственное отношение к получению языковой поддержки и очень сильно связан с поддержкой процесса программирования, я бы поставил кросс-пост здесь. Также по адресу: https://serverfault.com/questions/73196/python-3-1-1-with-enable-shared-will-not-build-any-extensions. Спасибо!
Проблема:
Сборка Python 3.1 на 64-битной RHEL 5.3 с --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
Проект, для которого он предназначен, является долгосрочным проектом, поэтому я согласен с программным обеспечением альфа-качества, если это необходимо. Вот еще несколько подробностей о проблеме.
Ведущий:
- Dell PowerEdge
- Intel Xenon
- RHEL 5.3 64bit
- Ничего особенного
Сложение:
- Исходный код 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