Cross-compile Qt for a Raspberry Pi with Ansible (CentOS)

Have you ever wanted to cross-compile a Qt application on your Raspberry Pi but hate bash scripts because bash scripts are literal garbage?  Well now you can, with some handy Ansible playbooks that I wrote!

Simplify Complex Processes

Ansible is a tool used to automate computer configuration, usually on Linux servers.  It lets an administrator run a sequence of tasks and makes sure the tasks get applied to a fleet of computers.  However, it is also great for configuring just a few computers that may need some complicated configuration.  If I think I might have to do a task more than once, I use Ansible instead of manually typing commands into a shell.

A good example of complicated configuration is setting up a cross-compilation toolchain on your Linux desktop so that you can build Qt apps for your Raspberry Pi.  I submit to you this excellent wiki article on setting up Qt for the Raspberry Pi as an example of a complicated process.  This article was indispensable to me and helped me get Qt running on my Pi2.

However, I never want to go through the manual process again, so I wrote some Ansible playbooks to help me automate it.  The advantage is if I have to upgrade to a future version of Qt, say 5.9.1, I'll be able to do so easily and deploy the new version to my Pi exactly like I did version 5.9.0.

My Ansible Solution

I've posted my Ansible playbooks on Bitbucket so download them there.  I assume you have a working Ansible installation, and that you're using CentOS 7 (a good Linux).  The README provided on Bitbucket will give further instructions, but here's a brief overview of the three playbooks:

  • 01 - Set up the Raspberry Pi with development tools that will be needed for the next playbook.
  • 02 - Set up the CentOS 7 host with a cross-compilation toolchain and compile Qt 5.9 for the Raspberry Pi.
  • 03 - Deploy Qt (and your own software) to the Raspberry Pi.  You can run this again whenever you update Qt or build new versions of your software.  A little Ansible knowledge will help.

This article was updated on March 16, 2017