Резюме: Изграждането на 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
-Wl,-Bsymbolic
за модулите (заедно с-fPIC
за libpython)? [нямам представа какво прави, просто знам, че е някаква неясна магия, която понякога се използва в такива случаи] - person andrew cooke   schedule 09.09.2011