c++ - resetear - ¿Cómo puedo configurar ccshared=-fPIC mientras ejecuto./configure?
mame32 no reconoce joystick (8)
Estoy intentando construir Python 2.6 para QGIS en RHEL 5. Durante la creación de QGIS, obtengo el siguiente error:
Linking CXX shared library libqgispython.so
/usr/bin/ld: /usr/local/lib/python2.6/config/libpython2.6.a(abstract.o): relocation R_X86_64_32 against `a local symbol'' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/python2.6/config/libpython2.6.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [src/python/libqgispython.so.1.0] Error 1
make[1]: *** [src/python/CMakeFiles/qgispython.dir/all] Error 2
make: *** [all] Error 2
Lo que -fPIC
de este error es que necesito compilar Python 2.6 con algún indicador, -fPIC
. De acuerdo, lo encontré en el archivo configure.in
pero verifica varias condiciones y sobre la base de esas condiciones asigna -fPIC
al indicador CCSHARED
.
Lo que hice fue que después de verificar todas las condiciones, agregué la siguiente línea para usar CCSHARED
deliberadamente como -fPIC
.
CCSHARED="-fPIC";
Pero no funcionó..
¿Cómo especificar mientras configuro que quiero configurar CCSHARED
como -fPIC
?
- Ejecute
./configure --help
, posiblemente canalizando a grep PIC, para ver si hay una opción para habilitar esto - Intente configurar la variable de entorno antes de ejecutar configure, por ejemplo, CCSHARED = "- fPIC" ./configure (como un solo comando, asumiendo bash)
Si ninguno de los dos funciona, necesita leer el código de configuración y comprender las condiciones que verifica para mejorar.
¿No es eso CCFLAGS
? (No he estado en ese lado del mundo por un tiempo).
Como se indicó en otra parte, la ejecución de configure con --enable-shared debería hacer que se incluya -fPIC en los indicadores del compilador. Sin embargo, aún puede ver el error "no se pudieron leer los símbolos" si intenta hacer una construcción paralela utilizando, por ejemplo, ''make -j8''. Tuve este mismo error en RHEL 5.2 y solo desapareció cuando eliminé el ''-j8'' de mi invocación make ...
Ejecute configurar con --enable-shared
. Luego, -fPIC
se incluirá como parte de las banderas compartidas.
El siguiente tiene un example de pasar fPIC para configurar
Lo siguiente funcionó para mí cuando me encontré con este error:
make clean
./configure CFLAGS=-fPIC CXXFLAGS=-fPIC
Lo tengo funcionando agregando -fPIC
después de CC= gcc -pthread
, es decir, CC= gcc -pthread -fPIC
en el Makefile.
reconstruyó el openssl con ./config --prefix = / software / bea / openssl / 100c --openssldir = / software / bea / openssl / 100c / ssl compartido -fPIC
Y luego también no funciona. dio / usr / bin / ld: los enlaces fallaron. El modifiqué la parte de enlace en el archivo make previamente era gcc -Wall -shared -o pwutil.so asciihex.o base64.o bitutils.o dict.o gen_rand.o key_schedule.o md5c.o pdg2_ecb.o pwutils.o random_data .o hexutils.o des3crypt.o blowcrypt.o /software/bea/openssl/1.0.0c/lib/libcrypto.a
cambiamos libcrypto.a a libcrypto.so después de reconstruir con opción compartida y - fPIC
gcc -Wall -shared -o pwutil.so asciihex.o base64.o bitutils.o dict.o gen_rand.o key_schedule.o md5c.o pdg2_ecb.o pwutils.o random_data.o hexutils.o des3crypt.o blowcrypt.o / software / bea / openssl / 1.0.0c / lib / libcrypto.so
Y funcionó