Ken,

The point of those flags is as follows. Using gcc, if you want the linker to "swallow" certain libraries when
creating a shared object, you must use these flags around those libraries. Here's an example from linux:


LD_RUN_PATH="" gcc -Wl,--whole-archive -rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE -L/usr/local/lib /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE -lperl -lnsl -ldl -lm -lpthread -lc -lcrypt -lutil -Wl,--no-whole-archive -shared -L/usr/local/lib PerlInterpreter.o -o ../../blib/arch/auto/Inline/Java/PerlInterpreter/PerlInterpreter.so

This basically tells the linker that DynaLoader.a should be included in PerlInterpreter.so. I think or else the
Linux linker assumes that DynaLoader.a will already be loaded and does not swallow it. On Windows
however, swallowing seems to be the default, that's why those flags are set to "".


BTW: I got this stuff from someone else (Doug MacEachern) and I'm no C compiler/linker expert, but that's
what I make of it.


Patrick


Williams, Kenneth (Ken) (TLR Corp) wrote:

Hi Patrick,

If I knew what the point of those flags was, I might be able to help find out what 
their equivalents are using the Solaris ld.  I can't promise much expertise, but I'm 
interested in getting this stuff working here so I'll help out if needed.

-Ken



-----Original Message-----
From: Patrick LeBoutillier [mailto:[EMAIL PROTECTED]
Sent: Wednesday, May 26, 2004 8:06 AM
To: Williams, Kenneth (Ken) (TLR Corp)
Cc: [EMAIL PROTECTED]
Subject: Re: Inline::Java 0.48_92 link failures


Ken,

Williams, Kenneth (Ken) (TLR Corp) wrote:



Update:

I dug around in some source files, and without ANY

understanding of the ramifications, I just added

           PRE_WHOLE_ARCHIVE       =>  '',
           POST_WHOLE_ARCHIVE      =>  '',

to the Solaris part of Java/Portable.pm. It built without

errors, but then produced the following errors during 'make test'. So I'm guessing the link still didn't happen correctly...






I do not have access to a Solaris machine, so I haven't had a chance to test the PerlInterpreter
extension on that platform. Thoses flags are really gcc/ld flags that work on Linux, and it so happens
that removing them on Win32 gives the desired results.


I'll try to get my hands on a Sun box and give it a try.

Thanks,

Patrick


-- ===================== Patrick LeBoutillier Laval, Quebec, Canada









--
=====================
Patrick LeBoutillier
Laval, Quebec, Canada



Reply via email to