下午好,
我在使用 libxml2 时遇到了困难。
我尝试构建 Perl 模块 XML-LibXML,它是我们标准运行时环境的一部分。但是,这次在 RHEL5 机器上安装失败,因为构建过程抱怨缺少 libxml2:
$> perl Makefile.PL LIB=/foo/lib/perl PREFIX=/foo INSTALLDIRS=site 启用本机 perl UTF8 运行 xml2-config...ok (2.7.6) 正在寻找 -lxml2... 不 正在寻找 -llibxml2... 不 未找到 libxml2
但是,该文件是可用的。开始构建
perl Makefile.PL LIB=/usr/inform/target/lib/perl PREFIX=/usr/inform/target INSTALLDIRS=site
导致了真正问题的更多证据:
[...] 无法为模块 Conftest 加载“blib/arch/auto/Conftest/Conftest.so”:/usr/inform/target/lib/libxml2.so.2:reloc 后无法恢复段 prot:/usr/lib 的权限被拒绝/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm 第 230 行。 在 test.pl 第 2 行 [...]
经过一番调查,我发现问题似乎libxml2.so
是由文本重定位造成的:
[tess91@INF-AW] lib$ eu-findtextrel libxml2.so.2.7.6 包含函数 'get_crc_table' 的文件未使用 -fpic/-fPIC 编译 包含函数 'crc32' 的文件未使用 -fpic/-fPIC 编译 包含函数“gzerror”的文件未使用 -fpic/-fPIC 编译 [...]
Ans 因为我们在目标机器上激活了 SElinux,所以链接 libxml.2 失败了!
是否有可能libxml2
正确创建,或者我是否必须要求管理员扭曲 SElinux 以允许重定位?
我真的不敢相信我是唯一一个在 SElinux 处于活动状态的 Linux 上遇到这个问题的人。我错过了什么?
任何帮助表示赞赏!
问候,斯特凡