Linux에서 텍스트 재배치없이 libxml2를 구축하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/1749927

  •  20-09-2019
  •  | 
  •  

문제

안녕하세요,

나는 libxml2에 어려움을 겪고 있습니다.

표준 런타임 환경의 일부인 PERL 모듈 XML-LIBXML을 구축하려고했습니다. 그러나 이번에는 RHEL5 상자의 설치가 실패했습니다. 빌드 프로세스가 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

그러나 파일을 사용할 수있었습니다. 빌드를 시작합니다

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

실제 문제에 대한 더 많은 증거로 이어졌습니다.

[...]
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
[...]

일부 조사 후 나는 문제가 libxml2.so 텍스트 재배치로 생성됩니다.

[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는 대상 기계에서 Selinux가 활성화되어 있기 때문에 libxml.2에 연결되어 실패했습니다!

만들 가능성이 있습니까? libxml2 적절하게, 또는 관리자에게 재배치를 허용하기 위해 Selinux를 비틀도록 요청해야합니까?

나는 내가 셀리 눅에서 활성화 된 Linux 에서이 문제를 가진 Olny One이라고 믿을 수 없다. 내가 무엇을 놓치고 있습니까?

도움이 감사했습니다!

안부, 스테판

도움이 되었습니까?

해결책 2

방금 가능한 설명을 찾았습니다.

libxml2를 빌드하는 동안 컴파일러 플래그 -fpic이 실제로 사용되므로 코드는 위치에 독립적으로 생성됩니다. 하지만:

공유 라이브러리를 만들 때 정적 Libz가 연결됩니다. 그게 내 문제의 근원인가요? 공유 실행 파일에 정적 LIB를 포함한 것은 로케이션 할 수없는 코드를 도입하여 라이브러리를 오염 시켰습니까?

EU-FINDTEXTREL의 상징이 이미 저를 그 방향으로 지적했다는 사실은 crc32, get_crc_table, 등. 암호화 중심 코드처럼 보입니다 ...

다른 팁

가장 간단한 방법은 관리자를 갖는 것입니다 yum install libxml2-devel 또는 yum install perl-XML-LibXML. 그렇지 않으면 추가 할 수 있는지 확인하십시오 -fPIC cflags에 Makefile.PL.

나는 당신이 32 비트 x86에 있다고 가정합니다. 다른 아키텍처는 -fPIC.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top