Compilation de Qt 5.4 pour le BBB sur Mac Osx

Pour pouvoir utiliser QtQuick et autres gadgets, j’avais besoin de Qt 5 sur le BBB, avec le support d’OpenGL Es 2.
J’ai déjà compilé Qt5 sur linux, mais allons-y pour la même chose sous OSx.

Sur un des BBB, j’ai un écran tactile de 7″ qui vient de chez 4D Systems. Il fonctionne bien, mais comme la plupart des écrans tactiles pour le Beagle Bone, la partie tactile utilise les convertisseurs AD du BeagleBone. La partie tactile est utilisable, mais pas de manière optimale. Dans un exemple de Qt, Calculator, souvent il faut s’y reprendre à plusieurs fois pour qu’une touche soit détectée. J’ai cherché, et je ne suis pas le seul à avoir remarqué ça. Donc, j’utilise un module à part pour l’écran tactile:un Egalax en USB acheté en Chine à pas cher avec une dalle tactile supplémentaire.

Tout ça pour en venir à une constatation: avec ce module, bien que sous Qt 4.8 en QWS tout fonctionne, lorsque qu’on lance un programme compilé sous Qt5, l’axe des Y est renversé. Apparemment cela vient de la librairie TSLib.
La solution est donc de recompiler cette librairie et de l’inclure dans la compilation de Qt5 en partant du repo sur github.

 

Prérequis: automake, autoconf et libtool avec

Bien entendu la toolchain de cross-compilation qui va bien ( ici la 4.8 ) de chez Knut: ici

Il peut aussi manquer le GCC.
Dans ce cas là:

Puis pour sélectionner la version de gcc à utiliser:

Pour compiler TSlib:

Et sur le BBB:

On se retrouve donc avec la TSlib fraichement compilée.

Pour ce qui est de OpenGL, j’ai pris un raccourci.
Sous ma machine virtuelle debian, sur laquelle je génère des images pour le BBB,  j’ai copié le répertoire du SDK pour la partie graphique sgx.
Rendons à César ce qui lui appartient, j’ai suivi les préceptes de Robert Nelson qui sont ici: https://eewiki.net/display/linuxonarm/BeagleBone+Black pour pouvoir obtenir une image avec un kernel 3.15, justement à cause de l’openGL ( tout du moins à l’époque où je me suis embarqué là dedans ).
Robert est très sympa et on a eu quelques échanges pour pouvoir intégrer la cape 4D Systems pour l’écran tactile.
Je ne vais pas développer ici, car ça a été un peu tordu à faire au début quand on est béotien comme moi en ce qui concerne les Device Trees, et qu’il faut intégrer le LCD et le pinmux des ports dont j’ai besoin.

Revenons à la partie OpenGL.
Donc après avoir téléchargé le dépot de Robert, il suffit de placer le répertoire SDK_BIN à un endroit qui vous convient. Je l’ai mis dans /Users/cedric/Development/BeagleBone dans mon cas.

La configuration pour pouvoir compiler Qt5

J’ai copié /Users/cedric/Qt/5.4/Src/qtbase/mkspecs/linux-arm-gnueabi-g++
vers : /Users/cedric/Qt/5.4/Src/qtbase/mkspecs/linux-arm-gnueabihf-g++

Le qmake.conf se retrouve être:

Ensuite, il faut créer un répertoire linux-beaglebone-g++ sous /Users/cedric/Qt/5.4/Src/qtbase/mkspecs/devices.

Le fichier qmake.conf contient:

et le fichier qplatformdefs.h contient uniquement:

Tout est prêt pour lancer la compilation de Qt5.

Voici le configure que j’ai utilisé:

Si tout est correct, on peut y aller avec un make suivi d’un make install.

J’ai eu quelques déboires pour compiler ça correctement du premier coup, car il me sortait des erreurs plutot étranges sur le lQtDesigner5: « /usr/local/linaro/arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.1/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot find -lQt5Designer »
La réponse se trouve en partie dans le -no-use-gold-linker, le gold linker étant apparu après le gcc 4.7, il me semble, et Qt veut absolument l’inclure même si il n’est pas supporté par la plateforme.
Et si vous tombez sur la même erreur, il faut modifier le Makefile dans ~/Qt/5.4/Src/qtquick1/src/declarative en supprimant tout lien avec Qt5Designer.

Pour l’envoyer sur le BBB:

Sur le BBB:

Nous voilà avec Qt5.4 sur le BBB.

Une dernière chose pour la route.

Voici ce que j’ai sur mon BBB de test pour pouvoir utiliser l’écran tactile.
Fichier /etc/profile.d/TS_QT.sh:

Note sur export QT_QPA_EGLFS_DISABLE_INPUT=1.
Cette ligne sert à désactiver le support interne de l’écran tactile et en lançant le programme suivi de -plugin tslib, on peut utiliser l’écran tactile en passant par la bibliothèque Tslib.
Cette variable va aussi désactiver la souris. Suivant ce que je veux faire, j’active cette variable ou pas.

 

, , , , , , , , , , ,

This article was written by Cédric

Menu