*

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で行う、ということができるようになりました。
時間がかかっていたビルドとは、これでオサラバです。

ではっ!

補足

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

関連記事

no image

RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRaspbianをセットアップしたとい

記事を読む

RasPi_Qt

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

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

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(6)
RaspberryPiをIoTゲートウェイにする(I)
VM上に開発環境を構築

どもです。前回までの記事で、ESP-WROOM-02/ESP32を電池で駆動して、センサーのデータを

記事を読む

MY_MFC_LOGO

MFCプログラミング(1):CFileまたはCStdioFileクラスを使用してファイル出力

どもです。 突然ですが、仕事でMFCを使用することになりました。 MFCはこれまで触ったことがな

記事を読む

sensor_graph_visualization_002_eye_catch

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

どもです。 前回に引き続き、今回もセンサ値の見える化です。 前回のエントリの最後に、「見

記事を読む

no image

Windows/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 今回は、Windows/EclipseでRaspberry Piのクロス環境を構築した

記事を読む

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

google_test_top

C言語でEV3開発(5)

どもです。 今回のエントリーは、前回のエントリーでちくっと触れた、「単体テスト」について、です。

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(10)
RaspberryPiをIoTゲートウェイにする(IV)
Appサーバーのセットアップ

この記事は、下記の記事の続きです。 IoT開発(6) RaspberryPiをIoTゲートウェ

記事を読む

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="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑