[scribus] Linking error

William Bader williambader at hotmail.com
Fri Sep 26 18:32:09 UTC 2014

> > And the dev-package MUST be the same version as the .so package.
> Ah ! What are the pratcical consequences ?
> As for now, i've never had to force-update the dev packages when minor-updating  Qt
> (that's not including the switch from Qt4 to Qt5)

On Fedora and probably most other systems, the development package has the run-time package as a dependency, so the packages should be compatible as long as you work within the package manager and do not force updates or move files manually.
$ ldd /usr/local/bin/scribus | grep Qt5Core  <-- ldd shows the shared libraries required by an executable.
        libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007fe35059c000)
$ yum provides /lib64/libQt5Core.so  <-- This is the file that the linker finds when you use -lQt5Core.  The development packages provide this and the C header files.
Loaded plugins: langpacks, refresh-packagekit
qt5-qtbase-devel-5.3.1-5.fc20.x86_64 : Development files for qt5-qtbase
Repo        : @updates
Matched from:
Filename    : /lib64/libQt5Core.so
$ yum deplist qt5-qtbase-devel-5.3.1-5.fc20.x86_64  <--  This shows the dependencies of the devel package.
Loaded plugins: langpacks, refresh-packagekit
package: qt5-qtbase-devel.x86_64 5.3.1-5.fc20
  dependency: /bin/bash
   provider: bash.x86_64 4.2.47-3.fc20
  dependency: libQt5Core.so.5()(64bit)  <--  This is the shared library used by the dynamic linker at run-time.
   provider: qt5-qtbase.x86_64 5.3.1-5.fc20  <--  This is the run-time package that provides the run-time library.
On Fedora, the development .so files are symbolic links to so.#.#.# files, so if I forced the 5.3.1 devel files without the 5.3.1 run-times, libQt5Core.so would be a dead sym-link and ld -lQt5Core would fail.  On other systems, it is possible that the devel .so could be a real file with symbolic information to satisfy ld -lQt5Core but the executables built using it would fail at run-time searching for a compatible libQt5Core.so.#.#.#.  I have done this intentionally with other packages to cross-compile for other operating systems.
$ ls -l /lib64/libQt5Core.so*
lrwxrwxrwx 1 root root      19 Jul 29 23:49 /lib64/libQt5Core.so -> libQt5Core.so.5.3.1  <-- This is part of the devel package.  The other are parts of the run-time package.
lrwxrwxrwx 1 root root      19 Jul 29 23:49 /lib64/libQt5Core.so.5 -> libQt5Core.so.5.3.1
lrwxrwxrwx 1 root root      19 Jul 29 23:49 /lib64/libQt5Core.so.5.3 -> libQt5Core.so.5.3.1
-rwxr-xr-x 1 root root 5101592 Jul 24 13:05 /lib64/libQt5Core.so.5.3.1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scribus.net/pipermail/scribus/attachments/20140926/16128042/attachment.html>

More information about the scribus mailing list