Saturday, December 14, 2013

Boot to Qt, but how to install?

Digia released latest version 5.2 of Qt recently in December 2013. The Boot to Qt (Qt Enterprise Embedded) and Qt Mobile sounds interesting, thus I decided to check what's up, but that's not so easy.

Qt Development environment only supports 64-bit platform, however some dependency libraries requires 32-bit environment. First I considered using my Chromebook, but it has 32-bit ARM cpu, so it's out of the question. Then I decided to run virtual machine in my 64-bit Windows7 laptop. I installed Virtualbox and created a virtual machine running Ubuntu. However, for a reason unknown to me, it only accepted 32-bit version of Ubuntu and refused to install 64-bit version.

Finally I decided to make it safe and install native single-boot Linux into my old Intel CoreDuo 64-bit laptop. At the time I didn't had a proper Linux PC available, thus I had to use Windows application to create bootable USB memory stick. Ubuntu web page links to Universal USB Installer. The UUI tool has selection for multiple distributions. However, it does not ask for how many bits you have or wish to use.

By default, UUI installs 32-bit version of Ubuntu into the memory stick. I didn't noticed that, untill I had the OS up and running in my laptop and trying to install Qt. So, once more re-installing Ubuntu in order to have proper 64-bit variant. As Qt installation instructions says Ubuntu 12.04 LTS and later are supported, I selected the latest 13.10 version of desktop Ubuntu.

Here comes the tricky part, as I said at the beginning. Even if Qt development  environment supports only 64-bit host platform, it requires some libraries working only in 32-bit environment. In order to do that, there is library called ia32-libs in Linux, which is one of the prerequisite of Qt installer. However, that library is removed from the 13.10 release!

Here is a posting explaining the reason: "The ia32-libs package was a hack to get 32-bit packages installed on a 64-bit installation. Since Ubuntu version 11.10 (Oneiric), Multi Arch has been added. One of the objectives for it is removing the ia32-libs package. Instead, you have to install the 32-bit libraries of a package with: sudo apt-get install package-name:i386 "

So there is a way to install 32-bit libraries in 64-bit Linux, but the Qt installer just doesn't know how to do that! The installation crashes after an hour or so from the start. So, I end up re-installing Linux into my PC once again, this time the 64-bit Ubuntu 12.04 LTS, which appears to be the one and only supported platform. Let's hope better luck this time.

What is the lesson here? Claiming the PC world is 64-bit only is as reasonable as claiming the Internet is IPv6 only. Even if 64-bit and IPv6 are good goals, one can not decline the legacy 32-bit and IPv4 world still exists strongly. If ever Qt development environment would support 32-bit platforms in the first place, I wouldn't have had the hassle at all.

Edit Dec. 15:
Before re-installing Ubuntu, I tried to re-install Qt environment . This time the installation succeeded, thus looks like it was just a random fail at the first try. Awfully slow the Qt Creator is. Don't know yet why.