Pregunta

Buenas tardes,

Estoy teniendo dificultades con libxml2.

He intentado construir el módulo de Perl XML-LibXML que es parte de nuestro entorno de tiempo de ejecución estándar. Sin embargo, esta vez la instalación en una caja RHEL5 fracasó, debido a que el proceso de construcción se quejó de falta libxml2:

$> perl Makefile.PL LIB=/foo/lib/perl PREFIX=/foo INSTALLDIRS=site
enable native perl UTF8
running xml2-config...ok (2.7.6)
looking for -lxml2... no
looking for -llibxml2... no
libxml2 not found

Sin embargo, el archivo estaba disponible. Comenzando con la acumulación

perl Makefile.PL LIB=/usr/inform/target/lib/perl PREFIX=/usr/inform/target INSTALLDIRS=site

llevado a una mayor evidencia de que el verdadero problema:

[...]
Can't load 'blib/arch/auto/Conftest/Conftest.so' for module Conftest: /usr/inform/target/lib/libxml2.so.2: cannot restore segment prot after reloc: Permission denied at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
 at test.pl line 2
[...]

Después de algunas investigaciones he encontrado que el problema parece ser que libxml2.so se crea con la reubicación de texto:

[tess91@INF-AW] lib$ eu-findtextrel libxml2.so.2.7.6
the file containing the function 'get_crc_table' is not compiled with -fpic/-fPIC
the file containing the function 'crc32' is not compiled with -fpic/-fPIC
the file containing the function 'gzerror' is not compiled with -fpic/-fPIC
[...]

Ans ya que tenemos SElinux activa en la máquina objetivo, el ligado con libxml.2 fallado!

¿Hay alguna posibilidad de crear libxml2 correctamente, o tengo que pedir al administrador de torcer SElinux para permitir la reubicación?

Realmente no puedo creer que soy el olny tener este problema en Linux con SELinux activo. ¿Qué me falta?

Cualquier ayuda apprecitated!

Saludos, Stefan

¿Fue útil?

Solución 2

Acabo de encontrar una posible explicación:

Durante la acumulación de libxml2 la bandera -fPIC compilador se utiliza de hecho, por lo que el código se crea independiente posición, y

Al crear la biblioteca compartida, la libz estática está vinculado en contra de ella. Es que la fuente de mi problema? Que incluye un lib estática en un ejecutable compartido contamina la biblioteca mediante la introducción de código no reubicable?

El hecho de que los símbolos de la UE-findtextrel debe ya me han apuntado en esa dirección, ya que crc32, get_crc_table, etc. parecerse código de cifrado centrada ...

Otros consejos

La forma más sencilla es tener su yum install libxml2-devel administrador o incluso yum install perl-XML-LibXML. De lo contrario, ver si se puede añadir a la -fPIC CFLAGS en el Makefile.PL.

Asumo que usted está en x86 de 32 bits, cualquier otra arquitectura no funcionaría sin -fPIC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top