📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

329行目: 329行目:
  echo "$USER ALL=NOPASSWD:$(which rsync)" | sudo tee --append /etc/sudoers
  echo "$USER ALL=NOPASSWD:$(which rsync)" | sudo tee --append /etc/sudoers
<br>
<br>
==== Qtライブラリのビルドおよびインストール ====
==== SysRootディレクトリの設定 ====
Linux PC上で、Raspberry Pi向けのQtソフトウェアをクロスコンパイルできるように、ツールチェーンおよびSDKを設定する。<br>
Linux PCで、Raspberry Pi向けのQtソフトウェアをクロスコンパイルできるように開発環境を設定する。<br>
Raspberry Pi上でネイティブにコンパイルすることもできるが、Linux PCの方がスループットが良い。<br>
Raspberry Pi上でネイティブにコンパイルすることもできるが、Linux PCの方がスループットが良い。<br>
<br>
<br>
351行目: 351行目:
  ./sysroot-relativelinks.py ~/Program/Qt_Embedded/sysroot
  ./sysroot-relativelinks.py ~/Program/Qt_Embedded/sysroot
<br>
<br>
Linux PC上で、Qtのダウンロードとビルドを行う。<br>
==== Qtライブラリのダウンロードおよびビルド ====
Qtのダウンロードおよびビルドを行う。<br>
<br>
<br>
ここでは、Qtソフトウェアは~/Program/Qt_Embedded/QtSoftwareディレクトリ、qmake等のホストツールは~/Program/Qt_Embedded/Hostディレクトリ、<br>
ここでは、Qtソフトウェアは~/Program/Qt_Embedded/QtSoftwareディレクトリ、qmake等のホストツールは~/Program/Qt_Embedded/Hostディレクトリ、<br>
357行目: 358行目:
<br>
<br>
以下のコマンドにおいて、<Qtのバージョン>は、使用するQtのバージョンに変更する。(例. Qt 5.15.2をダウンロードする場合、5.15.2と入力する)<br>
以下のコマンドにおいて、<Qtのバージョン>は、使用するQtのバージョンに変更する。(例. Qt 5.15.2をダウンロードする場合、5.15.2と入力する)<br>
また、<Raspberry Piのバージョン>は、Raspberry Piの種類に変更する。<br>
<Raspberry Piのバージョン>は、Raspberry Piの種類に変更する。<br>
* <Raspberry Piのバージョン>
* <Raspberry Piのバージョン>
** Raspberry Pi 1
** Raspberry Pi 1
369行目: 370行目:
<br>
<br>
<u>Raspbian OS 64bitを使用している場合は、<code>-device-option</code>オプションを以下のように記述する。</u><br>
<u>Raspbian OS 64bitを使用している場合は、<code>-device-option</code>オプションを以下のように記述する。</u><br>
-device-option CROSS_COMPILE=/<GCC ARMツールチェインのインストールディレクトリ>/bin/aarch64-linux-gnueabihf-
<code>-device-option CROSS_COMPILE=/<GCC ARMツールチェインのインストールディレクトリ>/bin/aarch64-linux-gnueabihf-</code>
<br>
また、Qt 5.8以降は、<code>-no-use-gold-linker</code>オプションを追加する必要がある。<br>
また、Qt 5.8以降は、<code>-no-use-gold-linker</code>オプションを追加する必要がある。<br>
* QtBaseをビルドする場合
* QtBaseをビルドする場合
422行目: 422行目:
* Githubからダウンロードしてビルドする場合
* Githubからダウンロードしてビルドする場合
*: QtのGithubでは、より多くの新しいアップデートが行われている。
*: QtのGithubでは、より多くの新しいアップデートが行われている。
*: init-repositoryコマンドは、Qtが提供する指定したモジュールのソースコードを取得するためのツールである。
*: <code>git clone https://github.com/qt/qt5.git</code>
*: <code>cd qt5</code>
*: <code>git checkout x.xx.x</code>または<code>git checkout x.xx</code>
*: <br>
*: <code>init-repository</code>コマンドは、Qtが提供する指定したモジュールのソースコードを取得するためのツールである。
*: super-repoはそれ自体は小さく、他の全てはgit submodulesとして保持されている。
*: super-repoはそれ自体は小さく、他の全てはgit submodulesとして保持されている。
*: 利用可能な全てのモジュールについては[https://doc.qt.io/qt-5/qtmodules.html こちら]、ツールについてはinit-repository --helpコマンドまたは[https://github.com/qt/qt5/blob/dev/init-repository こちら]を参照すること。
*: 利用可能な全てのモジュールについては[https://doc.qt.io/qt-5/qtmodules.html こちらのWebサイト]、ツールについては<code>init-repository --help</code>コマンドまたは[https://github.com/qt/qt5/blob/dev/init-repository こちらのWebサイト]を参照すること。
*: git clone https://github.com/qt/qt5.git
*: <code>./init-repository --module-subset=essential</code>
*: cd qt5
*: <br>
*: git checkout x.xx.xまたはgit checkout x.xx
*: <code>../qt5/configure -release -opengl es2 -eglfs -device linux-rasp-pi3-brcm-g++ \</code>
*: ./init-repository --module-subset=essential
*: <code>-device-option CROSS_COMPILE=/<GCC ARMツールチェーンのインストールディレクトリ>/bin/arm-linux-gnueabihf- \</code>
*: <code>-sysroot /run/media/suse/SAMSUNG860EVO/Qt_Embedded/sysroot \</code>
*: <code>-opensource -confirm-license -v -nomake examples -nomake tests -make libs -no-use-gold-linker -recheck-all \</code>
*: <code>-xcb -xcb-xlib -bundled-xcb-xinput -qpa eglfs -skip qtwebengine \</code>
*: <code>-prefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Qt_5_15_2 \</code>
*: <code>-extprefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Target \</code>
*: <code>-hostprefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Host</code>
*: <br>
*: <br>
*: ../qt5/configure -release -opengl es2 -eglfs -device linux-rasp-pi3-brcm-g++ \                                            [~]
*: <code>gmake -j $(nproc)</code>
*: -device-option CROSS_COMPILE=/<GCC ARMツールチェーンのインストールディレクトリ>/bin/arm-linux-gnueabihf- \
*: <code>gmake install</code>
*: -sysroot /run/media/suse/SAMSUNG860EVO/Qt_Embedded/sysroot \
*: -opensource -confirm-license -v -nomake examples -nomake tests -make libs -no-use-gold-linker -recheck-all -skip qtwebengine \
*: -prefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Qt_5_15_2 \
*: -extprefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Target \
*: -hostprefix /run/media/suse/SAMSUNG860EVO/Qt_Embedded/Host
<br>
<br>
==== Qtライブラリのインストール ====
ビルドしたQtライブラリを、Raspberry Piにデプロイする。<br>
ビルドしたQtライブラリを、Raspberry Piにデプロイする。<br>
~/Program/Qt_Embedded/Qt5ディレクトリに存在する全てのファイルを、Raspberry Piの/usr/localディレクトリに同期させる。<br>
~/Program/Qt_Embedded/Qt5ディレクトリに存在する全てのファイルを、Raspberry Piの/usr/localディレクトリに同期させる。<br>
  rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \
  rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \
  ~/Program/Qt_Embedded/Qt5 <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x
  ~/Program/Qt_Embedded/Target <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x
<br>
<br>
Raspberry PiのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br>
Raspberry PiのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br>
ただし、Raspberry Pi 2B / 3Bの場合、ファイル名の先頭に"00"を付加して、00-Qt_5_x_x.confファイルを作成する。<br>
<u>/etc/ld.so.conf.dディレクトリに配置する場合、Raspberry Pi 2B / 3Bでは、ファイル名の先頭に"00"を付加すること。</u><br>
  # .profileファイルに設定する場合
  # .profileファイルに設定する場合
  export LD_LIBRARY_PATH="/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x/lib:$LD_LIBRARY_PATH"
  export LD_LIBRARY_PATH="/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_5_x_x/lib:$LD_LIBRARY_PATH"
452行目: 458行目:
  sudo ldconfig
  sudo ldconfig
<br>
<br>
上記の設定により、Raspberry Piにおいて、Qt 5.x.xを使用できる。<br>
これにより、Raspberry PiでQtライブラリが使用できる。<br>
<br>
<br>
==== Qtソフトウェアの動作確認 ====
==== Qtソフトウェアの動作確認 ====
Qtソフトウェアをビルドして、動作確認を行う。<br>
Qtソフトウェアをビルドして、動作確認を行う。<br>