[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Re: Help: "Cannot mix incompatible Qt libraries"
From:       Thiago Macieira <thiago () kde ! org>
Date:       2008-08-27 16:08:41
Message-ID: 200808271808.41594.thiago () kde ! org
[Download RAW message or body]

[Attachment #2 (multipart/signed)]


On Quarta 27 Agosto 2008 16:57:10 Guillaume Pothier wrote:
> Well, it seems this problem got fixed now. I'd like to understand what
> happenned anyway, anybody knows which commit did the fix?

I don't know what commit fixed it, but I can tell you what the problem is:

When you link to a library, you pass arguments like: -L$QTDIR/lib -lQtCore. 
The linker will then do its magic and it'll write a binary for you. In the 
header of that binary, it lists what libraries it needs.

That's the NEEDED entries you saw on the objdump -p output (-p stands for 
"platform headers" or "private headers"). It matches all of the libraries that 
you pass with -l. However, the -L entries are not saved anywhere.

There's another entry you can have called RPATH or RUNPATH that sets the paths 
where to find those libraries, in order of preference. But you need an extra 
linker option passed in order to set those.

The kdesupport libraries did not or still do not have those extra options.

Also note that the ELF loading process requires a depth-first loading. So when 
dolphin links to libkdecore, libkdecore has to be successfully loaded before 
any dependencies of dolphin appear. And since libkdecore links to soprano or 
phonon, those have to be loaded before libkdecore loads.

And what happened? Soprano, strigi and phonon could not be loaded because of 
the missing entries.

Or, in your original case, since the RPATH/RUNPATH were not present, the 
loader found the system Qt libraries and loaded those.

But when it came to loading the dependencies of kdecore or dolphin, it loaded 
QtSvg from a different Qt build. And that's not allowed. Hence $subject.

-- 
  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358


["signature.asc" (application/pgp-signature)]

>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic