Tóm tắt: Xây dựng Python 3.1 trên RHEL 5.3 64 bit với --enable-shared
không biên dịch được tất cả tiện ích mở rộng. Xây dựng "bình thường" hoạt động tốt mà không có bất kỳ vấn đề.Python 3.1.1 with --enable-shared: sẽ không xây dựng bất kỳ tiện ích mở rộng nào
Xin lưu ý rằng câu hỏi này có vẻ như làm mờ ranh giới giữa lập trình và quản trị hệ thống. Tuy nhiên, tôi tin rằng bởi vì nó phải đối phó trực tiếp với việc hỗ trợ ngôn ngữ tại chỗ, và nó rất có liên quan đến việc hỗ trợ quá trình lập trình, rằng tôi sẽ đăng nó ở đây. Đồng thời tại: https://serverfault.com/questions/73196/python-3-1-1-with-enable-shared-will-not-build-any-extensions. Cảm ơn bạn!
Vấn đề:
Building Python 3.1 trên RHEL 5.3 64 bit với --enable-shared
thất bại trong việc biên dịch tất cả các phần mở rộng. Xây dựng "bình thường" hoạt động tốt mà không có bất kỳ vấn đề.
Tôi có thể xây dựng python 3.1 tốt, nhưng khi được xây dựng như một thư viện dùng chung, nó phát ra nhiều cảnh báo (xem bên dưới) và từ chối xây dựng bất kỳ mô-đun nào dựa trên c
. Mặc dù thất bại này, tôi vẫn có thể xây dựng mod_wsgi 3.0c5 chống lại nó, và chạy nó dưới apache. Không cần phải nói, chức năng của Python bị giảm đáng kể ...
Thú vị lưu ý rằng Python 3.2a0 (từ svn) biên dịch tốt với --enable-shared và mod_wsgi biên dịch tốt với nó. Nhưng khi bắt đầu apache, tôi nhận được:
Cannot load /etc/httpd/modules/mod_wsgi.so into server: /etc/httpd/modules/mod_wsgi.so: undefined symbol: PyCObject_FromVoidPtr
Dự án rằng đây là là một dự án dài hạn, vì vậy tôi vẫn ổn với phần mềm chất lượng alpha nếu cần thiết. Dưới đây là một số chi tiết khác về vấn đề này.
Host:
- Dell PowerEdge
- Intel Xenon
- RHEL 5.3 64bit
- Không có gì "đặc biệt"
tích xây dựng:
- Python 3.1.1 nguồn phân phối
- trình tốt với
./configure
- Không làm việc tốt với
./configure --enable-shared
(export CFLAGS="-fPIC"
đã được thực hiện)
làm ra
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
Xin chào, tôi muốn nhận xét rằng 100% này đã khắc phục sự cố tôi gặp phải. Cảm ơn bạn! Bạn có bất kỳ ý tưởng tại sao nó sẽ được tìm kiếm trong/usr/local thay vì/home/build/RPMBUILD/BUILD/...? – gahooa
Đọc lại dòng liên kết, nó trở nên rõ ràng: '-L/usr/local/lib' trước' -L.' –