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
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to