Robert Kern wrote: > Charles R Harris wrote: >> I'm wondering if the static libraries could simply be compiled with the >> -fPIC flag and linked with the program to produce the dynamic library. >> The static libraries are just collections of *.o files, so I don't see >> why that shouldn't work. > > I don't think there is a reason why it *wouldn't* work; it's just that one > needs > to do "gcc -shared" to make a .so and that flag also tells the linker to > choose > .so's over .a's for the libraries that get linked into the target .so. > Ok, I found it much faster than I expected: you should use the option -Bdynamic of the *linker*, that is, for example:
gcc -shared -o c_gaussd.mexglx c_gaussd.o mex_alloc.o -L/usr/local/matlab/bin/glnx86 -L/usr/media/boulot/local/lib -L/usr/lib/atlas -Wl,-Bstatic,-lem_full -llapack_atlas -latlas -Wl,-Bdynamic,-lmx -lmex will build a shared "library" c_gaussd.mexglx from c_gaussd.o and mex_alloc.o, statically link libem_full, lapack_atlas and atlas, and dynamically everything else. This was working, as otherwise, matlab would have picked up atlas symbols from its existing, already linked own atlas, and not from the atlas installed on my system (which was crashing matlab and was the reason why I went through this pain in the first place). cheers, David _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion