【问题标题】:How can I tell Perl XML::LibXML to use newer libxml2 library during runtime?如何告诉 Perl XML::LibXML 在运行时使用更新的 libxml2 库?
【发布时间】:2014-12-12 18:42:40
【问题描述】:

我们的机器预装了libxml2 2.7.6。但是,有人需要更新版本的libxml2 并在我们的网络文件系统上安装了2.7.8。同样,他们使用这个版本的libxml2 来编译他们版本的Perl 模块XML::LibXML,这是libxml2 的Perl 接口。这也放置在网络驱动器上,供开发人员使用。

我目前正在尝试使用他们编译的XML::LibXML 版本。我的脚本发现该模块很好,但是当它运行它时,它抱怨它是针对libxml2 的新版本编译的,而不是脚本正在查看的版本:

Warning: XML::LibXML compiled against libxml2 20708, but runtime libxml2 is older 20706

显然 Perl 脚本仍在查看系统的libxml2,但我需要它才能使用较新的版本。与其针对旧的libxml2 库重新编译XML::LibXML 模块,有什么办法可以告诉Perl 简单地使用较新的libxml2 库?

【问题讨论】:

  • 感谢您向我们展示您的代码。也许你只需要修改@INC

标签: perl libxml2 xml-libxml


【解决方案1】:

一个解决方案:

BEGIN{ @INC = ( "/SPECIAL/PERL/MODULES/DEV/PATH", @INC );

字符串

/SPECIAL/PERL/MODULES/DEV/PATH

是之前的路径

/SPECIAL/PERL/COMPILED/MODULES/DEV/PATH/XML/LibXML.pm

如果问题是库 PATH (*.so),那么您应该修改 LD_LIBRARY_PATH

BEGIN{ $ENV{'LD_LIBRARY_PATH'} = "/SPECIAL/SYSTEM/MODULES/DEV/PATH"; }

【讨论】:

  • 它可以找到 LibXML.pm 就好了。问题是它查看系统的旧 libxml2 库,而我需要它查看我们较新的 libxml2 库。
  • 啊,我试试看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 2017-10-24
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多