Discussion:
[Interest] Compile Qt program on Ubuntu 18.04 which will run on Ubuntu 14.04
Roland Hughes
2018-11-11 01:40:06 UTC
Permalink
Trying to compile Qt program where Qt is build from source on 18.04
64-bit and run it on 14.04. The interesting part is trying to identify
which libraries I need /this/ time. The C++ ABI has changed.

Looking to see if anyone else has done this recently? Which libraries do
I have to bring along? Yes, I know about ldd and readelf and have spent
days trying this in various VMs. The problem is once you start bringing
the C++ stuff over (because the ABI has changed yet again) you get to a
point where your VM won't reboot.

Please don't suggest snappy, flatpak or one of those other new
"container" solutions. Already wasted 3+ days on snappy. It's
architecture specific and only supports building on 14.04 when it comes
to Qt, at least the deployqt tool to make an AppImage does.

Did this years ago with this very program. Built a debian which would
install on both 64-bit and 32-bit for every version from 12.04 to 15.04
including the short lived .10 and odd year versions.

I tried compiling QT with C++11 standard, but, it will no longer compile
with that standard.

The incompatible ABI is the real killer.

It is more than one program so the hack of a shell script using
LD_LIBRARY_PATH would bring considerable difficulty.

Appreciate insights.
--
Roland Hughes, President
Logikal Solutions
(630) 205-1593

http://www.theminimumyouneedtoknow.com
http://www.infiniteexposure.net
http://www.johnsmith-book.com
http://www.logikalblog.com
http://www.interestingauthors.com/blog
http://lesedi.us
Thiago Macieira
2018-11-11 05:58:38 UTC
Permalink
Post by Roland Hughes
Trying to compile Qt program where Qt is build from source on 18.04
64-bit and run it on 14.04. The interesting part is trying to identify
which libraries I need /this/ time. The C++ ABI has changed.
There has been no ABI compatibility affecting Qt. What you're seeing is not an
ABI issue, it's the fact that you cannot compile with a version X of a library
and run with version Y where Y < X. The libraries will have symbols that get
used by their new headers and that weren't present in the old libraries. This
applies to Qt as well as the C++ and C standard libraries.

And all other libraries Qt uses. Assume ALL the libraries you need have such
changes.
Post by Roland Hughes
Looking to see if anyone else has done this recently? Which libraries do
I have to bring along? Yes, I know about ldd and readelf and have spent
days trying this in various VMs. The problem is once you start bringing
the C++ stuff over (because the ABI has changed yet again) you get to a
point where your VM won't reboot.
Solution: install 14.04 in a chroot and build in there.
Post by Roland Hughes
I tried compiling QT with C++11 standard, but, it will no longer compile
with that standard.
Yes, it does.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
Vlad Stelmahovsky
2018-11-11 06:59:27 UTC
Permalink
bundle stdlib++ etc with your app
Post by Roland Hughes
Trying to compile Qt program where Qt is build from source on 18.04
64-bit and run it on 14.04. The interesting part is trying to identify
which libraries I need /this/ time. The C++ ABI has changed.
Looking to see if anyone else has done this recently? Which libraries
do I have to bring along? Yes, I know about ldd and readelf and have
spent days trying this in various VMs. The problem is once you start
bringing the C++ stuff over (because the ABI has changed yet again)
you get to a point where your VM won't reboot.
Please don't suggest snappy, flatpak or one of those other new
"container" solutions. Already wasted 3+ days on snappy. It's
architecture specific and only supports building on 14.04 when it
comes to Qt, at least the deployqt tool to make an AppImage does.
Did this years ago with this very program. Built a debian which would
install on both 64-bit and 32-bit for every version from 12.04 to
15.04 including the short lived .10 and odd year versions.
I tried compiling QT with C++11 standard, but, it will no longer
compile with that standard.
The incompatible ABI is the real killer.
It is more than one program so the hack of a shell script using
LD_LIBRARY_PATH would bring considerable difficulty.
Appreciate insights.
Loading...