On Apr 12, 2008, at 12:35 AM, Jean-François Mertens wrote:
>
> On 12 Apr 2008, at 05:26, Jean-François Mertens wrote:
>>
>> On 12 Apr 2008, at 05:05, Ben Abbott wrote:
>>> With regards to "--all" ... do you mean that all the .o files  
>>> included
>>> in the static lib are not to be included in the dylib? ... or
>>> something else?
>>
>> "-all_load"  is a flag you can add to a link command, and that will
>> cause ALL .a archives in the final link line sent to ld to be fully
>> loaded, rather than just scanned for missing symbols,  and loading
>> the corresponding code.  The drawback is that it's effect cannot be  
>> stopped,
>> so applies even to whatever '.a' file may be added by the "compiler"
>> (aka, ld interface) to the link command
>>
>> But all the .o files in your static lib should be included in your  
>> dylib, right !
>> The above was just to tell you to keep, as you are doing now,  
>> extracting
>> explicitly the .o files from the archives, and linking those into a  
>> dylib,
>> rather than using the unsafe shortcut in atlas.info..
>>
>> Jean-Francois
>>
>> PS: But you should look at `man ld` before embarking on such a  
>> thing ...
>
>
> Forgot to say: for suitesparse, you use only one compiler ("gcc"),  
> if I
> remember correctly; so simplest is to link (as you were doing) using  
> "gcc"
> as linker, and not to go back to ld (and hence have to add files on  
> the link
> line that gcc (as linker) would anyway add..). So there was no  
> suggestion
> above to try to imitate those aspects in alas.info)
>
> JF

JF, as you contributed significantly to the original SuiteSparse.info,  
and have been involved in solving compiler problems respecting Octave,  
I think you are a good choice for me to lean on :-)

On Fedora Linux, shared versions of the libraries are created directly  
from the original object files. For example, from 
http://article.gmane.org/gmane.os.apple.fink.devel/16135

     make CFLAGS="$RPM_OPT_FLAGS -fPIC"
     gcc -shared -Wl,-soname,libamd.so.%{amd_version_major} -o ../Lib/ 
libamd.so.%{amd_version} `ls *.o`

I was hoping to extract the object code from the static libraries  
(using "ax -x libname.a") and then build the dylibs from that. Thus,  
I'd minimize changes the build process for SuiteSparse.

Any reason such an approach won't work? ... if so, and since I'm now  
confused, specifically what do you recommend I use regarding the  
options for gcc?

Looking over atlas.info I see

     ld="ld -dynamic -dylib -single_module -dead_strip -x -all_load - 
L. -L%p/lib/gcc4.3/lib -ldylib1.o -dylib_install_name"
     $ld %p/lib/libatlas.dylib libatlas.a -o libatlas.dylib -lSystem

The comments in atlas.info say; "We link 'manually', with ld, to avoid  
having unnecessary libs like lgcc_s among the load commands. This way  
the libs can be safely used in linking with any compiler: they will  
not bring themselves the wrong lgcc_s in the search list".

So my second question is; Is it preferred to use gcc or ld to produce  
the dylibs?

I also notice that the dylibs for atlas are built directly from the  
static libs. Is this possible for the gcc approach as well (a simpler  
task).

Third question; Regarding the names of the dylibs, should they be of  
the libname.0.dylib variety, with symbolic links of the libname.dylib  
variety? This isn't a problem either way, but as altas does not  
include the libname.o.dylib versions, I thought it best to ask.

I also have questions regarding "Shlibs entry", and "SplitOffs", but  
those will wait until I have a sufficient understanding so that I can  
ask proper questions and understand the answers ... meaning I have  
some studying to do! ;-)

Ben



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel

Reply via email to