【问题标题】:Installing XML::LibXSLT on ActiveState Perl 5.8在 ActiveState Perl 5.8 上安装 XML::LibXSLT
【发布时间】:2011-11-07 14:36:37
【问题描述】:

对于 XSLT 处理,我尝试使用 XML::LibXSLT。我在 win32 上有 ActiveState Perl。 据我了解,在调用“perl Makefile.PL”之前,我需要先安装 libxslt。

对于 win32 上的 libxslt,似乎二进制文件已经可用,我们可以使用它(因此无需编译和构建 libxslt)。可在 ftp://ftp.zlatkovic.com/libxml/

所以,我下载了 libxslt...zip 以及其他依赖项 - libxml、iconv 和 zlib。

但是当我尝试使用命令“perl Makefile.PL”编译它时,我收到错误消息:

running pkg-config libexslt... failed
    using fallback values for LIBS and INC
    Warning: prerequisite XML::LibXML 1.70 not found. We have 1.64.
    Note (probably harmless): No library found for -llibxslt
    Note (probably harmless): No library found for -llibxml2
    Note (probably harmless): No library found for -lzlib
    Note (probably harmless): No library found for -llibexslt
    Writing Makefile for XML::LibXSLT
    Writing MYMETA.yml and MYMETA.json

因此,随后的“dmake”命令也因抱怨缺少头文件而失败。这是输出:

C:/Perl/site/bin/gcc.exe -c     -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields -O2           -DVERSION=\"1.75\"    -DXS_VERSION=\"1.75\"  "-IC:\Perl\lib\CORE"  -DHAVE_BLANK -DHAVE_BLANK -DHAVE_EXSLT LibXSLT.c
    LibXSLT.xs:12:32: libxslt/xsltconfig.h: No such file or directory
    LibXSLT.xs:13:26: libxslt/xslt.h: No such file or directory
    LibXSLT.xs:14:35: libxslt/xsltInternals.h: No such file or directory
    LibXSLT.xs:15:31: libxslt/transform.h: No such file or directory
    LibXSLT.xs:16:31: libxslt/xsltutils.h: No such file or directory
    LibXSLT.xs:17:29: libxslt/imports.h: No such file or directory
    LibXSLT.xs:18:32: libxslt/extensions.h: No such file or directory
    LibXSLT.xs:19:30: libxslt/security.h: No such file or directory
    LibXSLT.xs:21:28: libexslt/exslt.h: No such file or directory
    LibXSLT.xs:22:34: libexslt/exsltconfig.h: No such file or directory
    LibXSLT.xs:24:30: libxml/xmlmemory.h: No such file or directory

你能帮我看看我缺少什么配置/设置吗?

【问题讨论】:

  • 对于编译,您需要的不仅仅是二进制文件。你也需要头文件。
  • 是的,我正在传递这样的细节 - “perl Makefile.PL INC="f:\temp\LibXSLT\include" LIBS="f:\temp\LibXSLT\lib"'。这个包括 xslt、libxml、zlib 和 icnov 的所有相应头文件和 lib 文件

标签: perl libxslt


【解决方案1】:

我不使用 zlatkovic 二进制文件,但原理是一样的,要么将 .a/.h 文件复制到有其他 .a/.h 文件的位置,要么告诉 Makefile.PL 在哪里可以找到它们. 我通过编辑 Makefile.PL 来做到这一点

$config{LIBS}='-l....\lib\libxml2.a -l....\lib\libiconv.a';
$config{INC}='-I....\include\libxml2';
$config{DEFINE} =' -DLIBXML_STATIC -static-libgcc ';
WriteMakefile(...

【讨论】:

  • 这对我有用。我丢失了几个我手动复制的头文件,它工作了:) 谢谢
【解决方案2】:

该警告令人担忧(我会考虑升级您的 XML::LibXML 模块),但真正的问题是 Makefile 没有指向您的 libxslt 标头的正确包含路径。找到二进制安装程序将它们放在您的系统上的位置,然后破解您的 Makefile 以指向它们所在的位置。或者在 Makefile 所在的位置重新安装 libxml(确保您具有应包含标头的“开发”版本)正在寻找它的包含目录。这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2014-12-02
    • 2016-11-22
    • 2011-12-11
    • 1970-01-01
    • 2013-11-07
    • 2010-11-13
    • 2015-05-11
    相关资源
    最近更新 更多