*

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

ではっ!

補足

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

関連記事

eclipse_4.3_kepler

eclipse/CDTにおけるgdbでのデバッグ中に発生するpythonのエラー

どもです。 今回のエントリーは、Eclipse上でのデバッグの際に「pythonのエンコードエラー

記事を読む

ADT7310_DHT11_eye_catch

温度センサの出力値の比較

どもです。 今回は、センサーの性能、測定結果を比較してみたので、それについて書きます。 1.

記事を読む

iot_at_home_eye_catch

IoT開発(2)-ESP-WROOM-02で気温測定

どもです。 この記事は、IoT開発(1)-ESP-WROOM-02のセットアップからの続きです

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

think_about_utest

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

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

記事を読む

OpenCvLogo

OpenCvによる画像サイズ変更

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

記事を読む

DIY_eye_catch

自宅で電子工作(2)-ラズパイのSPIコネクタ自作

どもです。 今回は、電子工作です。 1.何を作った 今回紹介(?)するのは、Raspber

記事を読む

iot_at_home_eye_catch

IoT開発(5)
ESP-WROOM-02をDeepSleepで長時間駆動させる

どもです。 この記事は、以下の記事の続きです。 IoT開発(1)-ESP-WROOM

記事を読む

OpenCvLogo

RaspberryPiで物体検出(1)-白線検出への挑戦(1):輪郭検出による白線検出

どもです。 今回は、OpenCvを用いて道路の白線検出について、です。 1.今回の環境 O

記事を読む

eclipse_oxygen

苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用いたRaspberryPi3の

記事を読む

Comment

  1. NEXUS6 より:

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

    • kensukemorimoto より:

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

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

NEXUS6 にコメントする コメントをキャンセル

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

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 ↑