Resumen: La creación de Python 3.1 en RHEL 5.3 de 64 bits con --enable-shared
no compila todas las extensiones. Construir "normal" funciona bien sin ningún problema.Python 3.1.1 con --enable-shared: no compilará ninguna extensión
Tenga en cuenta que esta pregunta puede difuminar la línea entre la programación y la administración del sistema. Sin embargo, creo que debido a que tiene que tratar directamente con la implementación del soporte de idiomas, y tiene mucho que ver con el apoyo al proceso de programación, lo publicaría aquí. También en: https://serverfault.com/questions/73196/python-3-1-1-with-enable-shared-will-not-build-any-extensions. ¡Gracias!
Problema:
Edificio Python 3.1 en RHEL 5.3 64 bits con --enable-shared
falla al compilar todas las extensiones. Construir "normal" funciona bien sin ningún problema.
Puedo construir python 3.1 bien, pero cuando se construye como una biblioteca compartida, emite muchas advertencias (ver a continuación) y se niega a construir cualquiera de los módulos basados en c
. A pesar de este error, aún puedo compilar mod_wsgi 3.0c5 contra él y ejecutarlo en apache. Huelga decir que la funcionalidad de Python se reduce en gran medida ...
Es interesante notar que Python 3.2a0 (de svn) compila bien con --enable-shared, y mod_wsgi compila bien contra ello. Pero al iniciar Apache, recibo:
Cannot load /etc/httpd/modules/mod_wsgi.so into server: /etc/httpd/modules/mod_wsgi.so: undefined symbol: PyCObject_FromVoidPtr
El proyecto que se trata es un proyecto a largo plazo, por lo que estoy bien con el software de calidad alpha si es necesario. Aquí hay más detalles sobre el problema.
Anfitrión:
- Dell PowerEdge
- Intel Xenon
- RHEL 5.3 de 64 bits
- Nada "especial"
Cuerpo:
- Python 3.1.1 fuente de distribución
- funciona bien con
./configure
- No funciona bien con
./configure --enable-shared
(export CFLAGS="-fPIC"
se ha hecho)
salida del comando make
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
Hola Martin, me gustaría comentar que este 100% solucionó el problema que estaba teniendo. ¡Gracias! ¿Tiene alguna idea de por qué estaría buscando en/usr/local en lugar de/home/build/RPMBUILD/BUILD/...? – gahooa
Al volver a leer la línea del vinculador, queda claro: '-L/usr/local/lib' es anterior a' -L. –