UDOOquad に、Qt5.3をビルドした記録です。
(環境)
ホスト : Ubuntu14.04 LTS / 64bit
ターゲット : Linaro Ubuntu 12.04 LTS / 32bit(UDOO quad)
(参考文献)
http://www.udoo.org/ProjectsAndTutorials/how-to-build-qt5-for-udoo/
How to build QT5 for UDOO
1.ホストが64bitなので、まずは”ia32-libs”をインストールします。まず、ここが1つ目の障害でした。下記を参考にしてクリア!
http://stackoverflow.com/questions/23182765/how-to-install-ia32-libs-in-ubuntu-14-04-lts
How to install ia32-libs in ubuntu 14.04 LTS
http://www.cyberciti.biz/faq/install-libgobject-2-0-so-0-on-debian-ubuntu-linux/
Error While Loading Shared Libraries: libgobject-2.0.so.0 Error and Solution [ Debian / Ubuntu ]
http://crunchbang.org/forums/viewtopic.php?id=23561
[SOLVED] ia32 packages kept back from dist-upgrade
http://www.randomhacks.co.uk/package-ia32-libs-gtk-has-no-installation-candidate-ubuntu-13-10/
Package ‘ia32-libs-gtk’ has no installation candidate Ubuntu 13.10
http://askubuntu.com/questions/352717/getting-ia32-libs-gtk
Getting ia32-libs-gtk
2.まずはgitをインストール
$ sudo apt-get install git
3./home/<user>下に、Qtソースコードとツール・チェーンを収納するためのディレクトリ”UDOO_Qt5_build”を作成、所有者を<user>に変更
$ sudo mkdir /home/<user >/UDOO_Qt5_build
$ sudo chown -R <user>:<group> /home/<user>/UDOO_Qt5_build
4.現在地を UDOO_Qt5_buildに変更
$ cd UDOO_Qt5_build
5.Freescaleのツール・チェーンを、UDOO_Qt5_build下にダウンロード
UDOO_Qt5_build$ git clone https://github.com/embest-tech/fsl-linaro-toolchain.git
6.UDOO.orgのダウンロード/バイナリページから、使用する(=ターゲットと同一)ファイルシステムを見つけ、ファイルシステムと同名のディレクトリを、/home/<user>下に新たに作成。*今回使用するファイル・システムは、”UDOO_FS_ubuntu-1204_v4.0”
UDOO_Qt5_build$ sudo mkdir /home/<user>/ UDOO_FS_ubuntu-1204_v4.0
7.現在地をディレクトリ<fileSystem name>に移動し、ファイルシステム圧縮ファイル”UDOO_FS_ubuntu-1204_v4.0.tar.gz”をダウンロード
UDOO_Qt5_build$ cd /home/<user>/UDOO_FS_ubuntu-1204_v4.0
(圧縮ファイルのダウンロードは各自対応)
8.上記ダウンロードファイルを解凍、そしてファイルシステム全ファイルの所有者を<user>に変更
UDOO_FS_ubuntu-1204_v4.0$ tar xvzf UDOO_FS_ubuntu-1204_v4.0.tar.gz
UDOO_FS_ubuntu-1204_v4.0$ cd /home/<user>
$ sudo chown -R <user>:<group> /home/<user>/UDOO_FS_ubuntu-1204_v4.0
Qt5をビルドするターゲット・ファイル・システムを、UDOOで使用するためマイクロSDカードに事前に書き込まれたファイル・システムとします。この書き込み済みマイクロSDカードをホストに接続すると、 /media/<user>/udoo_ubu1204 と認識されます
9.X11ではなくフレームバッファでアクセレートされるEGLとOpenGL ESを使用します。従って、下記のように、ファイルシステム内のいくつかのシンボリック・リンクを調整します。最後に、現在地をUDOO_Qt5_buildに戻します
注意:sudoでシンボリックリンクを作成するので、ファイル所有者を<user>に変更することを忘れずに!
$ cd /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib
lib$ sudo rm libEGL.so
lib$ sudo rm libEGL.so.1
lib$ sudo rm libGAL.so
lib$ sudo ln -s libEGL-fb.so libEGL.so
lib$ sudo chown -R <user>:<group> /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib/libEGL.so
lib$ sudo ln -s libEGL-fb.so libEGL.so.1
lib$ sudo chown -R <user>:<group> /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib/libEGL.so.1
lib$ sudo ln -s libGAL-fb.so libGAL.so
lib$ sudo chown -R <user>:<group> /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib/libGAL.so
lib$ cd /home/<user>/UDOO_Qt5_build
10.Qt5とQt3Dのソースコードを取得します
10-1.Qt5のgit repositoryを取得します
UDOO_Qt5_build$ git clone git://gitorious.org/qt/qt5.git qt5
10-2.ブランチを5.3にします(==Qt5.3にします)
UDOO_Qt5_build$ cd qt5
qt5$ git checkout 5.3
10-3.Qt3D(qt5のサブディレクトリ)のgit repositoryを取得します
qt5$ git clone git://gitorious.org/qt/qt3d.git qt3d
10-4. Qt5とQt3Dのすべてのソースコードをダウンロードするために、スクリプトinit-repositoryを実行します
qt5$ ./init-repository
11. qmake.confファイルに、いくつかの修正を加えます
qt5$ nano qtbase/mkspecs/devices/linux-imx6-g++/qmake.conf
いくつかの変数の定義を下記のように変更します
QMAKE_INCDIR += /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/include /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/include/arm-linux-gnueabi
QMAKE_LIBDIR += /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib
QMAKE_LFLAGS += -Wl, -rpath-link, /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib -Wl, -rpath-link, /home/<user>/UDOO_FS_ubuntu-1204_v4.0/usr/lib/arm-linux-gnueabi
*qmake.conf ファイルの残りの部分は、そのままです
12.configureオプションを定義します。すべてのオプションのリストは下記を実行すればわかります
qt5$ ./configure -help
私が実行したconfigureオプションは、下記の通り。(完了するには、それなりに時間がかかります)
qt5$ ./configure -prefix /opt/qt5 -make libs -no-pch -no-opengl -device imx6 -device-option CROSS_COMPILE=/home/<user>/UDOO_Qt5_build/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi- -no-largefile -opengl es2 -qt-zlib -qt-libpng -qt-libjpeg -no-nis -no-cups -gui -make examples -sysroot /media/<user>/udoo_ubu1204 -no-gcc-sysroot -opensource -confirm-license -qreal float -v
configurationが成功すれば、最後に“Configure summary”が記述され、その中のどこかに“OpenGL …yes (OpenGL ES 2.x)”という記述が見つかるはずです
configure中に、いくつかエラーが出現しますが、それは今回必要としない機能部分ですので、最後に“Configure summary”が記述されれば、基本的には、configurationは成功です
実は、私はここで大きく躓きました。
それは、9で作成したシンボリックの所有者を変更していなかった(root:rootのまま)にもかかわらず、“Configure summary”にまでたどりつき、一見Configureが成功したように見え、そのままmakeしてしまいました。makeでもいくつかエラーがでましたが、そのままmake installまですすむこともできました。しかし、すべての操作終了後、Qt3Dのexampleを実行すると、”it could not find or load the Qt platform plugin “eglfs”.”というエラーがでて、実行できません。“Configure summary”をよく見ると、”egfls…..no”でした。この原因が、シンボリック・リンクの所有者がrootのままだということに気づくのに、お盆休みをすべて使ってしまいました、トホホホ・・(これはUDOO.orgには明確な記述がないから要注意!)
13.makeコマンドを実行してください。私はコンパイル時間を少なくするために、3つのジョブを同時に実行するオプション”ーj3”をつけました。それでも4時間以上かかりましたが………
qt5$ make -j3
14.Qtをインストールするディレクトリを作成します
まずは、ホストに、そして、所有者を<user>にすることをお忘れなく
qt5$ sudo mkdir /opt/qt5
qt5$ sudo chown -R <user>:<group> /opt/qt5
つぎに、ターゲットに、そして、こちらも所有者を<user>に
qt5$ sudo mkdir /media/<user>/udoo_ubu1204/opt/qt5
qt5$ sudo chown -R <user>:<group> /media/<user>/udoo_ubu1204/opt/qt5
15.すべてのインストールするディレクトリの作成と所有者の変更が完了したら、make installを実行
qt5$ make install
すべての操作が正常に完了すれば、Qt5がターゲットのファイルシステムの /opt/qt5 ディレクトリに、すべてインストールされています。
16.最後に、ターゲットでの操作・実行を行います
まずは、ターゲットのファイルシステム上でのQt5を確認します
$ ls -l /opt/qt5
17.所有者を変更します
$ sudo chown -R ubuntu:root /opt/qt5
18.適切な検索をするよう動的リンクに伝えるために、このスクリプトを実行します
$ sudo /opt/gpulink-fb.sh
もし、x11バージョンに戻すなら、このスクリプトを実行します
$ sudo /opt/gpulink-x11.sh
19.インストールされているQtサンプルの中の1つを実行して、動作を確かめました
$ /opt/qt5/examples/qt3d/monkeygod