Python 3.1.1 с --enable-shared: няма да създава никакви разширения

Резюме: Изграждането на Python 3.1 върху RHEL 5.3 64 бита с --enable-shared не успява да компилира всички разширения. Изграждането на "нормално" работи добре без никакви проблеми.

Моля, имайте предвид, че този въпрос може да изглежда, че размива границата между програмиране и системно администриране. Вярвам обаче, че тъй като трябва да се занимава директно с проблеми с ОС и проблеми с програмирането, бих го публикувал кръстосано както в StackOverflow, така и в ServerFault. Също така в Python 3.1.1 с - -enable-shared : няма да създава никакви разширения. Благодаря!

Проблем:

Изграждането на Python 3.1 върху RHEL 5.3 64 бита с --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 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