Hi, this question follows the solved one with node id 942437. On a Debian VM I've compiled the latest Perl and installed a lot of CPAN modules - including XML::Parser - into a custom folder /root/perl5.

Now I want to copy that folder on a QNAP NAS with embedded Linux (on a folder named /share/FTP/xmltv) and, following the advice of building Perl from sources by Eliya, it works quite perfectly.

There is only a problem: I'm forced to export LD_LIBRARY_PATH to run XML::Parser and that's not what I want because I want to use my spefic versions of the libraries (on /share/FTP/xmltv/lib) and not those on the QNAP (/usr/lib). Look at this code:

[/share/FTP/xmltv/bin] # export PERL5LIB=/share/FTP/xmltv/lib:/share/F +TP/xmltv/lib/site_perl [/share/FTP/xmltv/bin] # ./perl -e "use XML::Parser" [/share/FTP/xmltv/bin] # find .. -name Expat.so ../lib/site_perl/5.14.2/i686-linux/auto/XML/Parser/Expat/Expat.so [/share/FTP/xmltv/bin] # find .. -name Expat.so | xargs ldd linux-gate.so.1 => (0xb770b000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb76d4000) libc.so.6 => /lib/libc.so.6 (0xb75a0000) /lib/ld-linux.so.2 (0xb770c000) (this is NOT correct because of /usr/lib...) [/share/FTP/xmltv/bin] # export LD_LIBRARY_PATH=/share/FTP/xmltv/lib [/share/FTP/xmltv/bin] # find .. -name Expat.so | xargs ldd linux-gate.so.1 => (0xb7753000) libexpat.so.1 => /share/FTP/xmltv/lib/libexpat.so.1 (0xb771c00 +0) libc.so.6 => /lib/libc.so.6 (0xb75e2000) /lib/ld-linux.so.2 (0xb7754000) [/share/FTP/xmltv/bin] # ./perl -e "use XML::Parser" (this works but only because I've exported LD_LIBRARY_PATH) [/share/FTP/xmltv/bin] # find .. -name Expat.so | xargs readelf -d | g +rep RPATH 0x0000000f (RPATH) Library rpath: [/root/perl5/lib]

If you see the RPATH of the Expat.so library, which should be part of XML::Parser, it corresponds to the path of the Debian Virtual Machine where I've compiled the module.

I want to have a single root folder which can be placed anywhere (in this case /share/FTP/xmltv) on the NAS from which I can launch ./bin/perl (after exporting PERL5LIB) and all the modules have to look for their libraries inside ./lib.

I think that this could be done by specifying LDFLAGS="-R$ORIGIN/../lib" but while it does work for C, I'm not able to do this with Perl/CPAN. How can I do?

I've compiled XML::Parser in this way on the VM:

debian:~/dev# cd expat-2.0.1 debian:~/dev/expat-2.0.1# LDFLAGS="-R$ORIGIN/../lib" ./configure --pre +fix=/root/perl5 debian:~/dev/expat-2.0.1# make && make install debian:~/dev/expat-2.0.1# cd .. debian:~/dev# cpan cpan[1]> look XML::Parser debian:~/.cpan/build/XML-Parser-2.41-dCfdKY# export LD_LIBRARY_PATH=/r +oot/perl5/lib debian:~/.cpan/build/XML-Parser-2.41-dCfdKY# perl Makefile.PL EXPATLIB +PATH=/root/perl5/lib EXPATINCPATH=/root/perl5/include debian:~/.cpan/build/XML-Parser-2.41-dCfdKY# make && make install debian:~/.cpan/build/XML-Parser-2.41-dCfdKY# exit

As I will have to do the same for XML::LibXML and XML::LibXSLT will the eventual solution work too? Thank you.


In reply to Editing RPATH of Perl module XML::Parser by virtualdj

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.