フレイドフォートonBlog

普通とか自由って何ぞや

カテゴリ:ソフトウェア > Qt

Qt 5 の Buildを Fedora 22 x64上でやってみた。

まず、ソースの取得やその他準備。
これは、Qtの公式 Wikiを参考に進めた。
Building Qt 5 from Git - Qt Wiki

git clone でソースを得た後に、
git checkout で branch を切り替える。
現在の初期値は、5.5。
記事題にした 5.6 は、
まだ dev で 5.6 として分かれていない。

5.6 dev をやった理由は、次のような経緯。
ここ数日で何度か試していたが、
5.5 及び dev で Build が通らなかった。

調べると、GCC 5を使っているという事が
引っかかった原因だったようで、
同じ事例もすぐに見つかった。

その後、dev で再度試したら通ったというだけ。
dev が通るようになってから、5.5 はまだ試していない。

branch を決めた後に
perl init-repository
で更にソースを取得。

$ git checkout dev
$ perl init-repository -f --branch
$ ./configure -opensource -developer-build -nomake tests
$ make -j8

インストール先を指定する場合、 configure で --prefix= を使う。
指定無しだとソースディレクトリの qtbase に被さる。
--prefix=qt56dev というようにディレクトリ名だけを指定した場合、
qtbase の中にその名のディレクトリが出来た。

Core i5-4570S 4コア
メモリー 8GB
の環境で、time コマンドを付けて make した結果。
2時間程掛かっていた。

ディスクの使用容量は、Build 後に 36GB程。
その後、make install した分は、4.9GB程。
計41GB以上の空きは必要。

Qt Creator への Kit登録は、
make install した後にインストール先の bin にある qmake を設定する。
とりあえず試しに、
Qt Widgets Application と Qt Quick Application のプロジェクトを
作ってみたところ、無地の状態では動いた。

一応、Qt の Build は出来たぽい。
今回の事で、時間や容量の目安は分かった。
このエントリーをはてなブックマークに追加 mixiチェック

Qt 5.3.0 RCが出たので更新した。

この1週間くらいだろうか、
Maintenance Tool の更新があった。
1.5.0-3 から 1.6.0-0 への更新。
その時には、まだ 5.3 RCの更新はなかった気はするが、
先程見たら、バージョン選択に追加されていた。

5.3-RCの項目の中でも
Linuxと Windowsで Qtを入れているが、
Windows向けの 5.3では、選べる種類が増えていた。

これまでの MinGW、msvc2010、msvc2012、Android向けに加えて
Windows Phone 8、Windows Runtime 8.1、msvc2013向けが増えた。
Windows系に対しては、BETAとも書かれている。

MinGW向けについては、
4.8から 4.8.2を使うようになったため、
コンパイラの MinGW 4.8.2も必要となる。

ここからは、更新に際して引っかかった点。
Qt 5.2.1 を Qt 5.3 RCへ入れ替えようとして、
5.2.1関連を削除、5.3 RCを追加とした場合、
5.3 RCの導入はされた物の 5.2.1の削除はされなかった。
だが、さらに問題だったのは、
Maintenance Toolでは、 5.2.1が導入済みであったのにも関わらず、
削除情報だけは反映されたらしく、消す事を選んでも処理されなかった。
Qt 全体を消した場合、これなら全部消えるのだが、
OSのスタートメニューの項目には 5.2.1の跡が残った。
これは、WIndows、Linux(XFCE)共に同じ状況となった。

このことから入れ替えを行う場合、
Maintenace Toolのパッケージマネージャから
5.2.1 を一旦消した後、5.3 RCを入れると影響は無さそう。
さらに、この場合に次の事が起きた。
Windows版の MinGWの 4.8 から 4.8.2への入れ替えに際して、
以前出くわした事と同じ事があった。(5.1.1への更新の記事
この時の追記で書いた toolchains.xml というファイルに
4.8 と 4.8.2の項目が並んでいた。
これを手動で 4.8の部分を消して、この点は解消。

今回の更新では、Windows版の場合、
Qtだけでなく、MinGWの入れ替えもあるので、
MinGWを使う場合なら、総入れ替えでも
それほど操作に差は無いかなとも思う。
このエントリーをはてなブックマークに追加 mixiチェック

Android端末への Qtアプリの Deployについて。

Ubuntu 12.04 LTS上に Qt 5.2.1 と Android SDKを入れて、
Qt と Android の連携は、Emulatorを使った場合は試した事があったが、
実機で試した事は無かった。
先日、Nexus 7 2012モデルを買ったので Deployしてみる事にした。
Nexus 7上の Androidは 4.3。

開発環境自体の準備から書く。
Qt 5.2.1 は、QtProjectからの物をオンラインインストーラで入れた。
入れる物を選ぶ際に Android armv7向けも追加。

Qt Creatorの設定の Androidタブにて、必要な PATHを通す。
ここで必要となるのは、Android SDK、Android NDK、Ant、JDKについて。
Ant、JDKは、Ubuntuのリポジトリからパッケージを得た。JDKは、OpenJDK。

設定のAndroidタブには、AVD Managerの項目が有り、
Emulatorの設定が可能だが、実機との連携となる今回は使わない。
尚、既に Eclipseから設定済みの場合、自動で読み込まれる。

PATHが通っていれば、自動でビルド用の Kitやコンパイラ等の設定も行われる。

続いて、設定のデバイスタブだが、
Nexus 7を繋いだ状態で自動認識されていたので、特にすること無し。

今度は、Nexus 7側の設定変更。
USBデバッグを ONにする。PCへ繋いだ際に フィンガープリントの確認が出た。
これだけかと思ったのだが、メディアデバイスで接続がONだと
Qtアプリのプロジェクトからの Deployが出来ない対象となったので、この項目を OFF。
この項目を再度 ONにする場合、ストレージの右上からUSB接続の設定を行う。

ここまでで連携に必要な設定は済んだ。

Qtアプリのプロジェクトを作成。
Android対応のテンプレートから次の2種を試した。
Qt Widgets、Qt Quick。
コードはそのままで Deployした。
Compatible devices の項目から Nexus 7が選択肢にあるのでそれを選ぶ。
Emulatorの設定がある場合も同様にここに並ぶ。
先に書いたメディアデバイスが ONの場合だと Incompatible devices 内に項目が出た。
この時は、デバイス名が???というような表示にもなった。
Compatible devicesからデバイスを選ぶと、BuildそしてDeployされた。

端末上に Qt Quickの場合、Hello Worldと表示が出た。
Qt Widgetsの場合、無地の画面だったので、
Qt Designerから追加して、表示内容が変わったのを確認。

ひとまず、Android端末への Deployまでの流れは出来た。

少し気になったのは、QtCreatorのコンパイルタブでのメッセージ。
Build Tools 19系、ターゲット Android 4.4.2、API level 19となっていた。
Android 4.3 なら API levelは 18になるんだっけか?
一応、そのままで動いてはいたが、おそらく合わせた方が良いのだろう。

あとこれを書いている際に、幾つか更新があったので適用した。
Qt Maintenance Tools の更新により、ウィザードが日本語化された。
Androdi NDKの r9d(2014-03) が出ていたので入れ替えた。
このエントリーをはてなブックマークに追加 mixiチェック

Silk を Cygwin上で動かしてみた。

この Silk とは、@task_jp さんが作った
Qt による Qt のためのウェブサーバー。

Silk を動かすためには、
Qt 5.1以上があれば良いとの事。

そもそも、なぜ Cygwin上で動かそうかと思ったのか。
Twitter上で Windows上で動かせるのかという話を見たから。

Linuxで動くなら、同じだけの材料が用意出来れば
良いだろうという事で Cygwin上でやってみた。

Cygwin上では、Cygwin Portsから
Qt 5のバイナリが得られる事は知っていたので、それを入れた。
現段階で得られたバージョンは、 Qt 5.1.0で条件を満たす。
Cygwinインストーラー上で qt5で検索すると見つけやすい。
ちなみに検索時に一瞬止まったように感じる事があるが、よくある事。

カテゴリー表示で Libs内に 今回使う libQt5で始まるパッケージがある。
Devel内に mingw64-i686-qt5 や mingw64-x86_64-qt5 もあるが、
これらは mingw版なので、ここでは使わない。バージョンも異なる。

gcc等のコンパイラも、 Cygwin標準の物を使う。
ここでの gccバージョンは、4.8.2。
Devel内の gcc-core、gcc-g++。

他にも必要なライブラリはあるのだろうけど、
既存環境があったため、それらの確認はしていない。
少なくとも、Cygwin標準と Cygwin Portsからの
バイナリで必要な物は揃う。

Silkのソースを qtquick.me から得た後に、Buildを行う。
$ qmake-qt5 -r
$ make
ここでコンパイルオプションに関するエラーが出た。

silkrpath.pri の
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${SILK_PLUGIN_RPATH}\'

QMAKE_LFLAGS += \'-Wl,-rpath,$${SILK_PLUGIN_RPATH}\'
に変更。 -Wl,-z,originを削除した。

エラーメッセージの内容を調べたところ
-z が Cygwinの ldに無いらしい。
調べていて、気付けなかったのだが、
Qt勉強会にて origin は、-z と併せて使う物だと教えてもらった。
-Wlは、-zのために付いていたので、これも削った。
これを書いている段階で、再度調べ直した。

初めに試した時には、この辺りがうまく行かず、
silkrpath.pri 自体を使わないように別の priファイルの書き換えをしたが、
今はこのオプションのみの変更で、他のファイルの変更はしていない。

改めて、make。
$ make
完走するが、この後 silk.exe を単に実行しようとしても
cygsilk-1.dll が見つからないと言われてしまう。
lib/以下に、このファイルは置かれているので
次のようにして動かした。

$ cd lib
$ ../bin/silk.exe

Windowsのファイアフォールの警告が出るので実行を許可する。
デフォルトのポートは、8080。
localhost:8080にアクセスすると、Silkのデフォルトページが出た。

何度かやり直している間に、git clone時に作られた
元々の silkというフォルダ名からだと動かない現象が発生。
silkのまま buildしてもバイナリは出来たが動かず、
例えば cygsilkのようにフォルダ名だけ変えてから動くというは謎だ。
何処でそんな状況になったのやら・・・。

Silkの Examplesの Database では、
別途プラグインを入れると試せるようになる。
このソースも qtquick.me から得られる。
こちらは、make install まで行う。
このエントリーをはてなブックマークに追加 mixiチェック

Qt 5、Waylandを使った Hawaii 0.2.0 が出たので Buildしてみた。
実のところ、これを試したのは、2013年末の事だが・・・。

これまでも何度か Hawaii Desktopの Buildは試したが、
今回は、gitでソースを得ない 0.2.0 のバージョン固定。

予め結果を書いておくと、一応 Buildは通ったが、
いろいろ問題があったようで表示には至らず。

それでこの Build環境だが、Tizen IVI 3.0 Snapshot版を使用。
Hawaii 0.2.0 の条件に合う物が多数得られると判断した。
最近の IVI を見ると Wayland 1.3系も含まれていて、
さらに 12月から、Qt for Tizenの Qt 5が標準リポジトリに含まれた。
QtWaylandのパッケージもある。
ここで使った IVI 3.0の Snapshotでは、Qt 5.2.1となっていた。

Hawaii のページに書かれた手順に従って進めようとしたが、
幾つかの不足もあったので、それらの Buildから行った。
dconf:ソースは、Merで Hawaiiを試している方がいたので、そちらの SRPM
accountsservice:ソースは、Fedora 20の SRPM

以前試した時には、Tizen IVI 3.0のリポジトリに含まれていなかった
polkit が含まれるようになったので、これは標準リポジトリから取得。

accountsserviceの specファイルは少し調整。
shadow-utils に含まれる物は、pwdutils に含まれていた。

その後、extra-cmake-modules の Buildで
cmakeのバージョンが満たせていないと出た。
Tizen IVI側は 2.8.11.2で、要求は 2.8.12系。
Fedora 20に 2.8.12系があったので SRPMを取得。
spec書き換えで Buildがうまくいかなかったので、
強引ながら直に Fedora 20のバイナリを入れた。
依存で emacs-filesystem も導入。
そもそもパッケージ化しなくても・・・という事は後で試した。

事前の材料は、揃えたので手順に従い進行。
hawaii-shell の Build時に qtwaylandscanner が見つけられないと出たので
環境変数の PATH調整。

hawaiisrcenvの中身は次の通り。
export QTDIR=/usr/lib/qt5
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export HAWAIIDIR=/usr/local/hawaii-0.2
export PATH=$HAWAIIDIR/bin:$PATH
export LD_LIBRARY_PATH=$HAWAIIDIR/lib:$LD_LIBRARY_PATH

ここまでで全て Buildが済んだ。
Tizen IVI 3.0では、デフォルトで Westonが動くので
一旦 Ctrl + Alt + BackSpace でダウンさせ、
CUIから環境変数を読ませた後に hawaii を実行。
このダウン操作は、2度行う必要がある。
1度目は app、2度目は root のユーザーで動くので両方落とす。

だが、冒頭に書いたようにうまくいかず画面が出なかった。
psコマンドで見ると動いているプロセスはあった。
プラグイン無しの Weston Desktop Shell上で
hawaii-terminal等のアプリのみを動かそうとしたらエラーが出た。
画面が出なかったのもこの辺りが関係してそうな気はする。

不足の導入時に手抜きしたところはあるので、
その辺は気にするべきだったかな。
手順確認のつもりでもあったので、
Buildを一通り出来る事の確認は今回出来た。

そして、これを書いている間に
pwdutils を shadow-utils に置き換えもやってみた。
この際に pwdutils の削除の際に依存がかなりあったので
zypper ではなく、rpmコマンドで消した。
その後に shadow-utils を入れた。
この shadow-utils のソースも Fedora 20の SRPM。

cmakeは、Fedora 20から入れた物を消して、
無地ソースから Buildした。
./configure --prefix=/usr --system-libs

Hawaiiの Build全体で cmakeを使うので一通り再 Buildした。
それでも結局、表示まで至らなかった。

今回の Build中のバージョン条件で
Qt5の要求が 5.2.1以上になっていた事に気付いた。
現行の正式版が 5.2.0だという事を考えると、
他の環境の場合、5.2.1を Buildする必要もあったという事になるか。

あとこれは Tizen側の事なんだろうか。
Weston Terminalから見れるはずのディレクトリが見れない状況が起きた。
rootの場合は起きずに一般ユーザーの時のみ。
尚、CUI等の別の場所からなら見られた。
今回のインストール先の /usr/local/hawaii-0.2/ でも、この現象が起きた。

Hawaiiの話に戻すと、
Build手順確認だけは Tizen IVI 3.0でもやれたという程度で、
動かすには、また別の問題というところかな。
このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ