Raspberry Pi用にQtをクロスコンパイルする方法を探していたのだが、どの情報も非X11のコンソール環境にてEGLFS経由で直接OpenGL ESで画面描画する構成のQtのバイナリを作るものばかりだった。
しかし私は、諸事情よりX11のデスクトップ上でアプリを実行できる構成のQtのバイナリが欲しいのである。
まあ、Linux上で「Qt for Linux/X11」を自前ビルドするのと同じ方法をRaspbian上で実行すれば、確かにブツは手に入る。だけどPC上でビルドする方が速いので、できればクロスコンパイルしたい。
Raspberry Pi向けのQtクロスコンパイル(EGLFSを使う版)
この文書を書いている時点で、最も有用な文書はQt WikiのRaspberryPi2EGLFSだ。このページの方法でEGLFSを使う構成でQtをクロスコンパイルできる。
以下、上記ドキュメントの補足:
- 上記ドキュメントでは、Raspberry Piの開発元でメンテしているクロスコンパイラを使用している。Raspberry Piの公式ドキュメントKernel buildingによると、中の人はUbuntuでこのクロスコンパイラを使うことが多いらしいので、実績のあるUbuntu上でクロスコンパイルした方が無難かもしれない。
- 事前にRaspbian側でssh接続を有効化しておく。
- rsync(1)でファイル転送する際は、上記ドキュメントのrsync(1)の実行例のオプションに「
-e ssh
」を追加して、ssh経由で転送する。 - Qt 5.11系をクロスコンパイルする際は、「
./configure
」のオプションに「-no-gbm
」を付与する。でないと「make
」した時にビルドに失敗する。 - 「
/etc/ld.so.conf.d/
」に配置するファイルの名前は、「qt5pi.conf
」ではなく「00-qt5pi.conf
」にする必要がある。