Roderich Schupp wrote:
> On Tue, May 13, 2008 at 5:55 PM, Dave Howorth
> <[EMAIL PROTECTED]> wrote:
>>  myscript: /lib/libc.so.6: version `GLIBC_2.3' not found (required by
>>  myscript)
>>
>>  The production machine doesn't have any libc.so; it has /lib/libc.a
> 
> It has  /lib/libc.so.6 (as stated in the message). libc.so is only relevant 
> when
> building (linking) programs, at runtime only libc.so.6 matters.

Aargh, rats! You're right of course. There's another machine in the
chain and I mistakenly reported the state of its /lib. 'The' production
machine does indeed have:

-rwxr-xr-x  1 root  root  5716491 Sep  4  2001 /lib/libc-2.2.4.so
lrwxrwxrwx  1 root  root       13 Sep 16  2002 /lib/libc.so.6 ->
libc-2.2.4.so

> The above message means: your perl 5.8.6 was built against a newer libc
> and uses some features of it (tagged with symbol version GLIBC_2.3)
> that are not present in the libc on the production machine.
> Probably this holds not only for your perl binary, but also for your
> pp'ed executable.
> Try running
> 
>   readelf -s my.exe | grep GLIBC_2.3

That says:
   171: 00000000   113 FUNC    GLOBAL DEFAULT  UND
[EMAIL PROTECTED] (6)

> If this produces any output, you're hosed - this executable simply will not 
> run
> on the production machine. In theory, one could link my.exe statically...
> If my.exe is OK, and it's just the special purpose perl packed into it
> (which is extracted into /tmp/par-USER/...) you might get away by
> including your libc.so.6 when pp'ing. Not that libm.so.6, libpthread.so.0
> and various libnss_*.so modules might also be affected.

Hmm, I've tried both of these but I still get the same error:
pp -c -o myscript -a "/lib/libc.so.6;/lib/libc.so.6" myscript.pl
pp -c -o myscript -l /lib/libc.so.6 myscript.pl

I don't see any pp options to build statically so I guess trying that
would mean poking around with ld. I'll try that next.

Cheers, Dave

Reply via email to