Python 3.1.1 с --enable-shared: не будет создавать никаких расширений

Резюме: при сборке Python 3.1 на 64-разрядной версии RHEL 5.3 с параметром --enable-shared не удается скомпилировать все расширения. Построение "обычный" работает без проблем.

Обратите внимание, что может показаться, что этот вопрос стирает грань между программированием и системным администрированием. Однако я считаю, что, поскольку он должен иметь дело непосредственно с проблемами ОС и проблемами программирования, я бы разместил его как на StackOverflow, так и на ServerFault. Также в Python 3.1.1 с - -enable-shared : не будет создавать никаких расширений. Спасибо!

Проблема:

При сборке 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 отлично компилируется против него. Но при запуске апача получаю:

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

Проект, для которого это предназначено, является долгосрочным проектом, поэтому я согласен с программным обеспечением альфа-качества, если это необходимо. Вот еще некоторые подробности о проблеме.

Хост:

  • Делл 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

person gahooa    schedule 10.10.2009    source источник
comment
(1) вы уверены, что очистили все, когда пробовали опцию -fPIC? приведенная выше ошибка предполагает, что он не использовался при сборке libpython (вы показываете создание bz2module.o). (2) вы пробовали -Wl,-Bsymbolic для модулей (вместе с -fPIC для libpython)? [я понятия не имею, что он делает, просто знаю, что это какая-то непонятная магия, иногда используемая в таких случаях]   -  person andrew cooke    schedule 09.09.2011
comment
Этот вопрос является дубликатом Python 3.1.1 с --enable-shared : не будет создавать никаких расширений.   -  person EvgenKo423    schedule 13.07.2021