http://www.perlmonks.org?node_id=385609

busunsl has asked for the wisdom of the Perl Monks concerning the following question:

Hi brothers and sisters!

I've got a major problem with wxPerl and PAR.

I try to create a PAR executable that contains a wxPerl program. No problem sofar, but when I try to execute this program on another machine with the same OS but without wxWidgets installed, it crashes because it does not find libwx_gtk.

I understand that, that's because didn't compile wxPerl with --static.

And here the problems start. When I compile wxPerl with --static, every program throws an undefined symbol: boot_Wx__Print at me and dies.

I even understand that, it's because I didn't compile wxWidgets statically.

But after compiling wxWidgets with --disable-shared and wxPerl again with --static, every program gives me undefined symbol: _ZdlPv.

And that's the end of my knowledge.

Some details:

OS:        SuSE 9.1
Kernel:    2.6.5
gcc:       3.3.3
Perl:      5.8.5 (all defaults)
wxWidgets: 2.4.2-gtk
wxPerl:    0.19

Replies are listed 'Best First'.
Re: wxPerl and PAR
by tachyon (Chancellor) on Aug 25, 2004 at 09:22 UTC

    The _ZdlPv symbol is a part of GCC itself. Specifically it is a part of the 3.x series. The error relates to the fact that the code is trying to link to an old 2.x version of glibc (libstdc++ to be exact)

    cheers

    tachyon

Re: wxPerl and PAR
by busunsl (Vicar) on Aug 25, 2004 at 13:07 UTC
    This problem is solved:

    You have to compile wxWidgets with --disable-shared and wxPerl with --static

    Additionally you have to supply /usr/lib/libstdc++.a (which has _ZdlPv) and libgcc_eh.a (use by libstdc++.a, resides somewhere with gcc).

    After that you have a really big Wx.so which can be packaged by PAR.

Re: wxPerl and PAR
by PodMaster (Abbot) on Aug 25, 2004 at 09:14 UTC
    I understand that, that's because didn't compile wxPerl with --static.
    I don't follow, how do you figure? PAR should've packaged up libwx_gtk. How did you package your application? Turn on verbose and show us how it went.

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      PAR should've packaged up libwx_gtk.
      Ok, but it hasn't :-(

      How did you package your application?
      pp -o hello hello.pl

      Turn on verbose and show us how it went.
      pp -vv -o hello hello.pl

        Can I get a ls /usr/lib/perl5/site_perl/5.8.5/i686-linux/auto/Wx/?

        On my machine it (or the equivalent) contains a bunch of wx dlls.

        I suggest you try scandeps -V yourprogram, and then pick up all the missing dll's (so's, whatever) and add then with into the resulting executable with the -l option (or however you wish, it is a zip file).

        MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
        I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
        ** The third rule of perl club is a statement of fact: pod is sexy.

Re: wxPerl and PAR
by Eyck (Priest) on Aug 25, 2004 at 08:28 UTC
    AFAIK PAR doesen't work with gtk/glib ( unfortunately :( ). There are few unhandled problems, you might either wait&see, or try to talk to PAR and gtk devs how to handle this.