Installing XML::LibXSLT on ActiveState Perl 5.8

975 views Asked by At

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.

2

There are 2 answers

1
153k On BEST ANSWER

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(...
0
Wedge Martin On

That warning is worrisome ( i'd think about upgrading your XML::LibXML module ) but the real problem is that the Makefile isn't pointed at the correct include path for your libxslt headers. Find where the binary installer put those on your system, and then hack your Makefile to point to where they are.. Or reinstall the libxml ( make sure you have the 'dev' version which should include the headers ) in a place where the Makefile is looking for its include dir. This should fix your problem.