Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

PAR::Packer, trouble to include specific external libraries

by HJO (Acolyte)
on Oct 01, 2012 at 15:18 UTC ( #996674=perlquestion: print w/replies, xml ) Need Help??
HJO has asked for the wisdom of the Perl Monks concerning the following question:


I'm trying to use PAR::Packer to package a perl script in a standalone binary file. My script is based on a module called sapnwrfc (, which purpose is to create external RFC connections to SAP systems. I use two different systems to test my scripts and my binary files : one(RHEL) which possess the module correctly installed so I can test my scripts and package them, and another(CentOS) which doesn't have the module so I can test the binary files that I made on the first system.

Here is my problem : This module works with a few lib files that I must add on the system I want to use the module for it to work, and I must specify in a environment variable the directory I placed them in... (the variable is called LD_LIBRARY_PATH)

Here is the command line I use to create the binary file :

 pp -o test --lib=/usr/sap/nwrfcsdk/lib/ -M Carp -M sapnwrfc

At first I had an error because the lib weren't recognized by in the system :

Can't load '/tmp/par-726f6f74/cache-cc3f9bec3331e8f2e860f20be9bc3ebcaa +2a5e7d/' for module SAPNW::Connection: can +not open shared object file: No such file or directory at /usr/lib64/ +perl5/5.8.8/x86_64-linux-thread-multi/ line 230. at /usr/lib/perl5/site_perl/5.8.8/PAR/ line 120 Compilation failed in require at line 22. BEGIN failed--compilation aborted at line 22. Compilation failed in require at script/ line 9. BEGIN failed--compilation aborted at script/ line 9.

Then I added the files in the usual directory on the system for the module to recognise them : /usr/sap/nwrfcsdk. But when I relaunched my binary file, I had another error :

Could not open the ICU common library. The following files must be in the path described by the environment variable "LD_LIBRARY_PATH":,, [nlsui0_mt.c 154 +4] pid = 5485 LD_LIBRARY_PATH is currently set to /tmp/par-726f6f74/cache-cc3f9bec33 +31e8f2e860f20be9bc3ebcaa2a5e7d [nlsui0_mt.c 1547] pid = 5485

So I've got two questions :
  1. How can I change an environment variable at the runtime of the binary file
  2. How can I run my binary file whithout having a concern of the presence of this files in the system ? (I supposed I didn't had this problem because I was including the lib files on the beginning...)


Replies are listed 'Best First'.
Re: PAR::Packer, trouble to include specific external libraries
by Anonymous Monk on Oct 01, 2012 at 15:50 UTC

      Thank you for your answer,

      I used the --lib option which is an option that I believe alows me to add lib files to my package as specified on the doc :

      -I, --lib=DIR Add the given directory to the perl library file search path. May be specified multiple times. (

      or do you mean that I have to include every single file with a -l option ?

      Thanks for cavapackager, I've heard of it but it didn't really seamed like the perfect answer for me... I'll give it another try tomorrow

      And yes basically CentOS is like RHEL, every packaged is compiled after the RedHat packages and it is supposed to be 100% compatible...


        I used the --lib option ...

        That is why i said use the -l option, copy/paste and ctrl+f to read about the -l option

        $ perldoc pp |ack "\-l\b" -l, --link=*FILE*|*LIBRARY* packed file. Also accepts names under library paths; i.e. "-l ncurses" means the same thing as "-l" or "-l

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://996674]
Approved by marto
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (5)
As of 2018-06-22 11:43 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (124 votes). Check out past polls.