libkdeinit_ libraries
Michael Matz
matz at kde.org
Thu Jul 17 16:26:40 BST 2003
Hi,
On Thu, 17 Jul 2003, Adriaan de Groot wrote:
> Which ones are the libraries?
libkdeinit_bla.* (* should be .so and .la, sometimes also .so.0) is the
library. It should be placed in $prefix/lib . This one contains the
kdemain() symbol.
bla.* (* == .so and .la) is the KLM. It should be placed into
$prefix/lib/kde3. This one links against the above library.
bla itself (in $prefix/bin) is the executable. It also links against the
libkdeinit_bla.so.
> I have five DSOs related to dcopserver,
Three.
> > It should be investigated, why the DSO in question didn't provide a
> > kdemain symbol, and second why kinit didn't look for main in that case.
>
> It's not about the symbol that's being searched for,
It is. You fixed the symtom of kdemain() not being found in bla.so by
also search libkdeinit_bla, and thats wrong. Instead the fact that
kdemain() wasn't found in bla.la needs to be fixed, because it should be
found there. It links against libkdeinit_bla.so, which provides that
symbol, and when dlopen'ing bla.so dlsym() should be able to see that
symbol. It's possible that there are bugs in ld.so which make dlsym not
see it, and in that case we have to work-around such bugs by also
introducing a real function calling kdemain() into bla.so.
> Perhaps the question should be: why so many DSO's?
There are exactly three DSO involved (see above): a library, a module and
an executable. And that's the way it needs to be for some platforms.
Ciao,
Michael.
More information about the kde-core-devel
mailing list