Yoct & qt5.71 を使ってBeagleboneblack 用 linux imageを作る(まとめ)

Yoct projectを使ってBeaglebone black |Green (以下BBB)linux imageを作りqt5.71で作ったプログラムが走ることを確認したので散らばった記事へのリンクをまとめておきます。

成果

  • Qt5.7.1で作ったプログラムが走るようになりました。
  • QMLも多分使えます (まだテストしていません)8-) 
  • 起動時間が短くなりSplash画面を表示することが出来るようになりました。
1.Ubuntu 16.04のセットアップとYoct projectインストールからBBB linux 4.4.50イメージの作り方まで。
YoctoによるBeagleBone Blackシステムの構築(英語)
Yoct project を使ってBeagleboneblack 用 linux imageを作る

 

2.arm (qt5.7.1) ToolChainの作り方

Qt用ToolChainの準備

上のリンクを参考にarm(qt5.7.1)ToolChainを構築すると.dtsから.dtbを作るためのコンパイラdtcを走らせることが出来ます。
またqtcreatorのためのクロスコンパイル環境として使います。

QtCreatorのインストールと設定方法はQtCreator for Beaglebone black のインストールを参照してください。

3.BBBの設定

追加でコピーするファイル

qwt関連のライブラリ、実行でライブラリが無いとのエラーが出たファイルをToolChainのArmライブラリからコピーする。

4.アプリを自動起動する設定

update-rc.dでアプリケーションを自動スタートするよう設定
(1) /etc/init.d/にアプリケーションを実行するスクリプトを作成

(2)update-rc.d でスクリプトを登録

# update-rc.d startmyapp.sh start 90 2 3 4 5 .

オプション defaults を使うとシステム終了時にも startmyapp.sh stop の形でスクリプトが呼び出されるので開始・終了処理をきちんと書いたスクリプトが必要ですが、オプション start を使うとシンプルなスクリプトでOK

 

 

QtCreator for Beaglebone black のインストール

QtCreator3.5( Qt4.8)で作ったアプリをYoctoで作った Qt5.7.1ベースのシステムに転送して実行するとタッチスクリーンが正常に動作しない(反応はするけれどts_calibrateで校正してもカーソルの位置がでたらめになる。)のでQtCreatorの新バージョンを入れてみることにしました。

Qt用ToolChainの準備

参考URL:raspberrypi2 yoctoの開発環境の作成

yoctoプロジェクトは~/yocto-mortyに入っている。

~/yocto-morty/bbb/build/conf/local.confにSDKMACHINE = “x86_64″を挿入(コメントを外す)し、
qwtのインストールで必要となるopenglを追加する。

# i686 or x86_64
SDKMACHINE = "x86_64"

#DISTRO_FEATURES_BACKFILL_CONSIDERED += "pulseaudio opengl"  

DISTRO_FEATURES_append = " opengl x11"
bitbakeを実行しtoolchainのインストーラを作成する。
$ cd ~/yocto-morty
$ source poky-morty/oe-init-build-env ~/yocto-morty/bbb/build
$ bitbake meta-toolchain-qt5
インストール  (/opt/poky-qt5/2.2.1 にインストールした)
$ tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-qt5-cortexa8hf-neon-toolchain-2.2.1.sh
Enter target directory for SDK (default: /opt/poky/2.2.1):

QtCreatorのインストール

参考URL:HIO Wiki:Set Up Qt Creator for Yocto Device

Qtの新しいバージョンをダウンロードする、現時点で最新版はQt5.8でしたがYocto-qt5のバージョンと合わせるために次の場所からQt5.7.1を選択してダウンロード。

Download QT Creator Linux X64

$ chmod +x qt-opensource-linux-x64-5.7.1.run
$ sudo ./qt-opensource-linux-x64-5.7.1.run

ダウンロードしたスクリプトに実行属性を与えて実行するとインストーラが起動するので指示に従ってインストールする。

QtCreatorの環境設定

 /opt/Qt5.7/1/Tools/QtCreator/bin/qtcreator.sh
を編集して次の行を最初に挿入する(#!/bin/shの前)

source /opt/poky-qt5/2.2.1/environment-setup-cortexa8hf-neon-poky-linux-gnueabi

QT Creatorを起動

QtCreator インストールディレクトリ /opt/Qt5.4.0/Tools/QtCreator/bin に移動して 起動する

$: sudo sh qtcreator.sh

QT Creatorの設定

デバイスを追加する

コンパイラを追加する
/opt/poky-qt5/2.2.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++

Qtバージョンを指定する(qmakeのパスを指定)
/opt/poky-qt5/2.2.1/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake

キットにbbbを追加する。
デバイス、Sysroot、コンパイラ、Qtバージョンを追加する
Qt mkspecにはエラー対策として linux-oe-g++ を追加

qwtを使う場合、追加でインストールする

1.Qwt6.1.2をダウンロードして解凍

ダイレクトリンクが見つからないため下のリンクからブラウザでダウンロードして~/qt-bbb/downloadsに保存。

http://sourceforge.net/projects/qwt/files/qwt/6.1.2/

$ cd ~/Downloads
$ tar -jxf qwt-6.1.2.tar.bz2

2.Qwt-6.1.2のデザイナーをインストール

Qt Creatorを起動

Qwtプロジェクトを開く

ファイル -> ファイル・プロジェクトを開く から Downloads/qwt-6.1.2/qwt.pro

プロジェクトを構成 ウィンドウが開く

デスクトップにチェックが入っていることを確認して 「プロジェクトを構成」ボタンをクリック

ビルド > 全てビルド を実行

(少し時間がかかる)

myapp.proのエディタ画面で右クリックしてライブラリ追加すると使えるようになる。

designer用ライブラリは認識されない(調査中)

 

ターゲット BBBに転送するファイル

~/Downloads/build-qwt-bbb-Debug/lib/libqwt* -> /usr/libへ
/opt/poky-qt5/2.2.1/sysroots/cortexa8hf-neon-poky-linux-gnueabi/usr/lib/libQt5Svg*  -> /usr/libへ

Project移行時に発生したエラー

Qt requires C++11 support error.

プロジェクトファイル .pro に
QMAKE_CXXFLAGS += -std=c++11
を追加して解決。