[Interest] Qt5, XCB and X11

Lachlan.Hetherton at csiro.au Lachlan.Hetherton at csiro.au
Fri Jul 11 06:14:21 CEST 2014


Hello there,

We are looking to upgrade our existing application from Qt4 to Qt5.3.0. Our application is deployed to Linux, Windows and Mac systems, which we manage by shipping compiled copies of the Qt libraries. An extremely simplified snapshot of our current process for building a Linux version of our application is as follows:

  *   Build the Qt libraries using the LSB compiler (LSB version 4.1), maximizing their portability
  *   Build our application against the Qt libraries also using the LSB compiler
  *   Bundle the libs and executables up into a single RPM ready for shipping

We have gone a long way toward replicating this process for the Qt5 version of our application, however, we have encountered a few problems:

  1.  Qt5 has hard dependencies on libxcb (even with -qt–xcb enabled in the configuration), as well as libX11-xcb, and therefore libX11 (though not direct)
  2.  The LSB does not contain these libraries
  3.  One of the Linux distributions we deploy to (SLED 11) does not provide up-to-date versions of these libraries

Our initial approach to mitigating concerns (1) and (2) has been to compile LSB-compliant versions of these dependent libraries (as well as their dependencies), and then build Qt5 against these to make sure the Qt libs are LSB compliant. This in itself we have achieved, creating an LSB-compliant bundle that we could theoretically deploy standalone, which would resolve (3), since we would be shipping libxcb, libX11 and the like. However, as you might imagine, I have numerous doubts about shipping copies of libxcb and libX11 with our application, not the least of which is that the libs would be almost guaranteed to be loaded into memory twice (I have no idea what problems this could cause).

Does anyone out there have any recommendations about how we should approach this? Here’s a list of options we’ve considered but which seem similarly flawed:

  1.  Compile the dependencies statically so that they become embedded in our own exe. This doesn’t really address the issue of there being two copies of them in memory, plus Qt looks for libxcb.so to link against dynamically, so I don’t believe this is even possible.
  2.  Don’t ship libxcb / libX11 at all (we have tested this on relatively up-to-date systems like Ubuntu 13 with success, but we aren't able to run on SLED11 if we do this and we are unfortunately constrained in this regard)

Thanks for your help – any ideas you have are most appreciated.

Kind regards,

Lachlan Hetherton
Software Engineer (Visualisation)
☎ +613-9545-8041
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140711/dd811df4/attachment.html>


More information about the Interest mailing list