*

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

公開日: : 最終更新日:2019/09/07 Qt, RaspberryPi, 開発

どもです。

RaspberryPiのOS:Raspbianの新しいバージョンが、少し前(…なのか?)にリリースされました。
なので、さっそくOSを更新してみました。

前回の投稿では、NOOBSを使用したOSのインストール方法について記載しました。
実はコレ、Raspbianの新バージョンがリリースされたことに合わせて、使っているOSを更新した際の内容です。

今回は、OSの更新に合わせて、Qtのクロス環境を更新したので、その手順について書きます。
なお、対象とするQtのバージョンは「5.12.3」です。
LTSなので、このバージョンを選択しています。

0.概要

今回のエントリでは、Linux(ubuntu)上でQtをビルド、Raspbianにデプロイすることで、Linux(ubuntu)-Raspbianのクロス環境を構築します。

1.Raspbian側のセットアップ

まず、クロス環境を構築するにために、Raspbianに必要なライブラリ群をインストールします。

1.1.source.listの修正

Raspbianの/etc/apt/source.listを修正します。
/etc/apt/source.list 内の「deb-src」のコメントアウトを解除します。
コメントアウトの結果、下記のようになっています。

1.2.ライブラリのインストール

次に、Raspbianで下記コマンドを実行して必要なライブラリをインストールします。

1.3.ディレクトリの作成

Linux上でビルドしたQtをデプロイするためのディレクトリを作成します。
今回作成したのは、[/usr/local/qt5pi]です。
なお、[/usr/local]のフォルダはroot権限となりますが、qt5piのみpiユーザーでもアクセスできるように所有権を変更しておきます。

2.Linux(ubuntu)側のセットアップ

ここから、Linux(ubuntu)での作業です。
RaspberryPiのIPアドレスが必要になりますので、事前に調べておきます。

2.1.作業フォルダの作成

下記コマンドを実行して、作業フォルダを作成します。

2.2.クロスコンパイルに必要なツールを取得

作成した[raspi]に移動して、作業に必要なツール(toolchain)を取得します。

2.3.デプロイ用ディレクトリ作成

Raspbianのクロス環境、デプロイのための作業フォルダです。

Linuxでのビルド結果は、上記3つのフォルダに反映されます。

2.4.RaspberryPiと同期

先の手順で作成したフォルダと、RaspberryPiの実機と同期させます。
これにより、Linuxでのビルド結果を簡単にRaspberryPiの実機に反映させることができます。
実行するコマンドは、下記の通りです。

※raspberrypi_ipは、RaspberryPiのIPアドレスを示します。
環境にに合わせて変更します。

なお、上記コマンドを実行するだけでは、実は不十分です。
シンボリックリンクを調整して、sysrootの相対パスの構成なんかを統一しておく必要があります。
この手順、手動ではやっていられません。
そこは便利なスクリプトが用意されていますので、それを取得・実行します。
コマンドは、下記の通り。

2.5.Qtをビルド

ここまでで、下準備は整いました。
次は、Qtのソースコードを取得してビルドします。

これで、Qt ver.5.12.3のソースコードを取得できました。
ここで、qmake.confを編集します。
というのは、Raspbian stretchのEGLライブラリは、名前が変更されています。
なので、これに合わせてQtの設定を変更する必要があります。
変更するファイルは、Qtのソースコード内にある[./qtbase/mkspecs/devices/linux-rasp-pi-g++/qmake.conf]です。
変更後のqmake.confを示しておきます。

変更点は、上記ファイルでの20~21行目、32行目です。
変更内容は、「-lEGL」と「-lGLESv2」を、それぞれ「-lbrcmEGL」と「-lbrcmGLESv2」と変更しています。
実際に変更した行が、23~24行目、および33行目に該当します。

ここまでできたら、configureを実行してMakefileを生成し、ビルドからインストールまで一気に実行します。

makeする際の「-j」の後ろの数字は、並行して実行するプロセスの数です。
私の環境では「4」としました。
(このエントリーの手順を実行する際には、各自の環境に合わせて変更してください。)

以上で、qt5のクロスコンパイルが完了します。
最後に、ビルドしたqt5をRaspberryPiと同期させます。
実行するコマンドが、こちら。

これで、RaspberryPiにQtが生成されます。

3.まとめ

以上で、Linux/RaspberryPiのQtCreatorのクロス環境が構築できました。

GUIアプリをRaspberryPi上でビルドすると、モノによっては時間がかかってしょうがないです。
しかしこれにより、実装からビルドまでをLinux(ubuntu)で行い、動作確認をRaspberryPiで行う、ということができるようになりました。
時間がかかっていたビルドとは、これでオサラバです。

ではっ!

補足

今回の記事は、コチラの記事を参考にしています。
大変助かりました。
ありがとうございます。

関連記事

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(3)-SPIのインターフェース追加(その2)

どもです。 今回のエントリも、前回に引き続き、RaspberryPiのピンをより簡便に使用でき

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、ということに挑戦し始めました。 しか

記事を読む

think_about_utest

単体テストの効率化を考える(5)-スタブの自動生成への入力

どもです。 「単体テストの効率化について考える」の5回目です。 1回目から4回目はコチラ:

記事を読む

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

no image

QtでRaspberryPi/GUI開発(3):ためしに時計を作ってみた(其の参)-StyleSheetの適用

どもです。 前回のエントリーでは、グループ化されたボタンに対するイベントハンドラについて書きました

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きました。 今回からは、このタッ

記事を読む

no image

C言語でEV3開発(13)-opOUTPUT_STEP_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである 「opOUTPUT_STEP_S

記事を読む

Comment

  1. NEXUS6 より:

    各環境で名前を変更されたパッケージ名を確認してから実行した方が良さそうですね。

    • kensukemorimoto より:

      コメントありがとうございます。

      確かにそうですね。
      少し意識するようにいたします。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

iot_at_home_eye_catch
IoT開発(1)-ESP-WROOM-02のセットアップ

どもです。 前回までのエントリで、「DHT11の測定結果をクラウドで

sensor_graph_visualization_002_eye_catch
センサーの値を見える化する(2)-温湿度センサ:DHT11の値の見える化

どもです。 前回に引き続き、今回もセンサ値の見える化です。

sensor_graph_visualization_eye_catch
センサーの値を見える化する(1)-温度センサ:MDK001の値の見える化

どもです。 ここしばらく、PCツールとかの話が多かったのですが、

think_about_utest
VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単

think_about_utest
VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStud

→もっと見る

PAGE TOP ↑