Search code examples
perllibxslt

Installing XML::LibXSLT on ActiveState Perl 5.8


For XSLT processing, I am trying to use XML::LibXSLT. I am having ActiveState Perl on win32. As I understand, I need to first install the libxslt before calling 'perl Makefile.PL'.

for libxslt on win32, it seems that binaries are already availble and we can use it (so no need to compile and build libxslt). It's available at ftp://ftp.zlatkovic.com/libxml/

So, I downloaded libxslt...zip along with other dependencies - libxml, iconv, and zlib.

But when I am trying to compile it using command 'perl Makefile.PL', I am getting error message:

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

Because of this, the subsequent 'dmake' command is also failing by complaining about missing header files. Here is the output:

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

Can you please help me what configuration/setup I am missing.


Solution

  • I don't use zlatkovic binaries, but the principle is the same, either you copy the .a/.h files to where you have other .a/.h files, or you tell Makefile.PL where to find them. I do it by editing Makefile.PL

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