「インストール - Qt6 Banana Pi (RISC-V)」の版間の差分

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

 
(同じ利用者による、間の6版が非表示)
280行目: 280行目:
  QMAKE_LIBS_OPENVG      = -lOpenVG $${QMAKE_LIBS_EGL}
  QMAKE_LIBS_OPENVG      = -lOpenVG $${QMAKE_LIBS_EGL}
   
   
  # Compiler flags for RISC-V64
  # RISC-V64 ベクトル拡張1.0対応コンパイラフラグ
# rv64gc = rv64imafd_zicsr_zifencei (general purpose 64-bit RISC-V)
  COMPILER_FLAGS          = -march=rv64gcv -mabi=lp64d
  COMPILER_FLAGS          = -march=rv64gc -mabi=lp64d
   
   
# ベクトル拡張含む、サポートされている場合
# COMPILER_FLAGS          = -march=rv64gcv -mabi=lp64d
  QMAKE_CFLAGS            = $${COMPILER_FLAGS}
  QMAKE_CFLAGS            = $${COMPILER_FLAGS}
  QMAKE_CXXFLAGS          = $${COMPILER_FLAGS}
  QMAKE_CXXFLAGS          = $${COMPILER_FLAGS}
  QMAKE_CXXFLAGS_RELEASE += -O2
# リリースビルド時の最適化フラグ
  QMAKE_CXXFLAGS_RELEASE += -O2 -ftree-vectorize -pipe
   
   
  QMAKE_LIBS              += -lrt -lpthread -ldl
  QMAKE_LIBS              += -lrt -lpthread -ldl
365行目: 364行目:
  #QMAKE_LIBS_OPENGL_ES2  = -lGLESv2 $${QMAKE_LIBS_EGL}
  #QMAKE_LIBS_OPENGL_ES2  = -lGLESv2 $${QMAKE_LIBS_EGL}
   
   
  # Compiler flags for RISC-V64
  # RISC-V64 ベクトル拡張1.0対応コンパイラフラグ
  COMPILER_FLAGS          = -march=rv64gc -mabi=lp64d
  COMPILER_FLAGS          = -march=rv64gcv -mabi=lp64d
  QMAKE_CFLAGS            = $${COMPILER_FLAGS}
  QMAKE_CFLAGS            = $${COMPILER_FLAGS}
  QMAKE_CXXFLAGS          = $${COMPILER_FLAGS}
  QMAKE_CXXFLAGS          = $${COMPILER_FLAGS}
  QMAKE_CXXFLAGS_RELEASE += -O2
# リリースビルド時の最適化フラグ
  QMAKE_CXXFLAGS_RELEASE += -O2 -ftree-vectorize -pipe
   
   
  QMAKE_LIBS              += -lrt -lpthread -ldl
  QMAKE_LIBS              += -lrt -lpthread -ldl
423行目: 425行目:
  set(CMAKE_SHARED_LINKER_FLAGS_INIT  "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/riscv64-linux-gnu")
  set(CMAKE_SHARED_LINKER_FLAGS_INIT  "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/riscv64-linux-gnu")
    
    
  # RISC-V64 compiler flags
  # RISC-V64 ベクトル拡張対応コンパイラフラグ
# rv64gc = rv64imafd_zicsr_zifencei (general purpose 64-bit RISC-V)
  set(QT_COMPILER_FLAGS "-march=rv64gcv -mabi=lp64d")
# -mabi=lp64d = 64-bit long and pointer, double-precision float ABI
  set(QT_COMPILER_FLAGS "-march=rv64gc -mabi=lp64d")
# リリースビルド用の最適化フラグ
  set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe")
  set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe -ftree-vectorize")
# リンカフラグ
  set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed")
  set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed")
   
   
646行目: 650行目:


== Qt 6ライブラリのアップロード ==
== Qt 6ライブラリのアップロード ==
ビルドしたQtライブラリを、Raspberry Piにデプロイする。<br>
ビルドしたQtライブラリを、Banana Piにデプロイする。<br>
~/Program/Qt_Embedded/Qt6ディレクトリに存在する全てのファイルを、Raspberry Piの/usr/localディレクトリに同期させる。<br>
~/Program/Qt_Embedded/Qt6ディレクトリに存在する全てのファイルを、Banana Piの/usr/localディレクトリに同期させる。<br>
  rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \
  rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \
  ~/Program/Qt_Embedded/Target <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x
  ~/Program/Qt_Embedded/Target <Banana Piのユーザ名>@<Banana Piのホスト名またはIPアドレス>:/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x
<br>
<br>
<u>※注意</u><br>
<u>※注意</u><br>
<u>Raspberry PiにアップロードしたQtライブラリの所有者がrootになっている場合があるため、</u><br>
<u>Banana PiにアップロードしたQtライブラリの所有者がrootになっている場合があるため、</u><br>
<u>以下のコマンドを実行して、所有者をローカルユーザに変更する必要がある。</u><br>
<u>以下のコマンドを実行して、所有者をローカルユーザに変更する必要がある。</u><br>
  sudo chown -R <Raspberry Piのユーザ名>:<Raspberry Piのグループ名> ~/InstallSoftware/Qt_6_x_x
  sudo chown -R <Banana Piのユーザ名>:<Banana Piのグループ名> ~/InstallSoftware/Qt_6_x_x
<br>
<br>
Raspberry PiのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br>
Banana PiのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br>
<u>/etc/ld.so.conf.dディレクトリに配置する場合、Raspberry Pi 2B / 3Bでは、ファイル名の先頭に"00"を付加すること。</u><br>
<u>/etc/ld.so.conf.dディレクトリに配置する場合、ファイル名の先頭に"00"を付加すること。</u><br>
  # .profileファイルに設定する場合
  # .profileファイルに設定する場合
  export LD_LIBRARY_PATH="/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:$LD_LIBRARY_PATH"
  export LD_LIBRARY_PATH="/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:$LD_LIBRARY_PATH"
   
   
  # /etc/ld.so.conf.dディレクトリに配置する場合
  # /etc/ld.so.conf.dディレクトリに配置する場合
  echo /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_6_x_x.conf
  echo /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_6_x_x.conf
  sudo ldconfig
  sudo ldconfig
<br>
<br>
これにより、Raspberry PiでQtライブラリが使用できる。<br>
これにより、Banana PiでQtライブラリが使用できる。<br>
<br><br>
<br><br>


686行目: 690行目:
*: [デバイス]プルダウンから、[設定]画面左にある[デバイス]で作成したターゲットを選択する。
*: [デバイス]プルダウンから、[設定]画面左にある[デバイス]で作成したターゲットを選択する。
*: [ビルドデバイス]プルダウンから、[ローカルPC]を選択する。
*: [ビルドデバイス]プルダウンから、[ローカルPC]を選択する。
*: [Sysroot]項目に、Raspberry Piのシステムルートディレクトリのパスを入力する。
*: [Sysroot]項目に、Banana Piのシステムルートディレクトリのパスを入力する。
*: [コンパイラ]項目の[C]プルダウンから、C向けのクロスコンパイラを選択する。
*: [コンパイラ]項目の[C]プルダウンから、C向けのクロスコンパイラを選択する。
*: [コンパイラ]項目の[C++]プルダウンから、C++向けのクロスコンパイラを選択する。
*: [コンパイラ]項目の[C++]プルダウンから、C++向けのクロスコンパイラを選択する。
*: [GDB]プルダウンから、クロスコンパイラ向けGDBを選択する。
*: [GDB]プルダウンから、クロスコンパイラ向けGDBを選択する。
*: [Qtバージョン]プルダウンから、上記で設定した[Qtバージョン]を選択する。
*: [Qtバージョン]プルダウンから、上記で設定した[Qtバージョン]を選択する。
*: [Qt mkspec]項目から、デバイス定義ファイル (/<クロスコンパイルしたQt 6のインストールディレクトリ>/mkspecs/devices/linux-raspberrypi-new-g++ファイル) のパスを入力する。
*: [Qt mkspec]項目から、デバイス定義ファイル (/<クロスコンパイルしたQt 6のインストールディレクトリ>/mkspecs/devices/linux-bananapi-f3-g++ファイル) のパスを入力する。
*: [CMake Tool]プルダウンから、クロスコンパイルで使用したCMakeを選択する。
*: [CMake Tool]プルダウンから、クロスコンパイルで使用したCMakeを選択する。
*: <br>
*: <br>
717行目: 721行目:
*: Value - :0 または :0.0
*: Value - :0 または :0.0
* Variable : PATH
* Variable : PATH
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin  ※PATHの設定が既に存在する場合は、追記する
*: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin  ※PATHの設定が既に存在する場合は、追記する
* Variable : LD_LIBRARY_PATH  (Raspberry Piの~/.profileファイルに環境変数LD_LIBRARY_PATHを設定している場合)
* Variable : LD_LIBRARY_PATH  (Banana Piの~/.profileファイルに環境変数LD_LIBRARY_PATHを設定している場合)
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:/home/<Raspberry Pi's User Name>/InstallSoftware/Qt_6_x_x/plugins/qmltooling
*: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:/home/<Banana Pi's User Name>/InstallSoftware/Qt_6_x_x/plugins/qmltooling
* Variable : QML_IMPORT_PATH
* Variable : QML_IMPORT_PATH
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml
*: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml
* Variable : QML2_IMPORT_PATH
* Variable : QML2_IMPORT_PATH
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml
*: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml
* Variable : QT_PLUGIN_PATH
* Variable : QT_PLUGIN_PATH
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins
*: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins
* Variable : QT_QPA_PLATFORM_PLUGIN_PATH
* Variable : QT_QPA_PLATFORM_PLUGIN_PATH
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/platforms
*: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/platforms
<br>
<br>
また、上記の設定を簡潔に行う場合、Qtプロジェクトのディレクトリにある.pro.userファイルにおいて、<br>
また、上記の設定を簡潔に行う場合、Qtプロジェクトのディレクトリにある.pro.userファイルにおいて、<br>
740行目: 744行目:
     <value type="QString">QT_QPA_PLATFORMTHEME=qt6ct</value>
     <value type="QString">QT_QPA_PLATFORMTHEME=qt6ct</value>
     <value type="QString">DISPLAY=:0</value>
     <value type="QString">DISPLAY=:0</value>
     <value type="QString">PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value>
     <value type="QString">PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value>
     <value type="QString">LD_LIBRARY_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/qmltooling</value>
     <value type="QString">LD_LIBRARY_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/qmltooling</value>
     <value type="QString">QML_IMPORT_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value>
     <value type="QString">QML_IMPORT_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value>
     <value type="QString">QML2_IMPORT_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value>
     <value type="QString">QML2_IMPORT_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value>
     <value type="QString">QT_PLUGIN_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins</value>
     <value type="QString">QT_PLUGIN_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins</value>
     <value type="QString">QT_QPA_PLATFORM_PLUGIN_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/platforms</value>
     <value type="QString">QT_QPA_PLATFORM_PLUGIN_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/platforms</value>
   </valuelist>
   </valuelist>
   <!-- ...略 -->
   <!-- ...略 -->
762行目: 766行目:
==== GDBの設定 ====
==== GDBの設定 ====
次に、GDBデバッガの設定を行う。<br>
次に、GDBデバッガの設定を行う。<br>
リモートターゲットをデバッグする時、GDBは、Linux PC側にダウンロードしているRaspberry Piのシステムルートディレクトリを検索する。<br>
リモートターゲットをデバッグする時、GDBは、Linux PC側にダウンロードしているBanana Piのシステムルートディレクトリを検索する。<br>
そのため、GDBにターゲット側のRaspberry Piのシステムルートディレクトリを検索するように設定する必要がある。<br>
そのため、GDBにターゲット側のBanana Piのシステムルートディレクトリを検索するように設定する必要がある。<br>
<br>
<br>
これは、Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br>
これは、Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br>
773行目: 777行目:
システムルートディレクトリに対して、Qtライブラリのインストールディレクトリのシンボリックリンクを作成することを推奨する。<br>
システムルートディレクトリに対して、Qtライブラリのインストールディレクトリのシンボリックリンクを作成することを推奨する。<br>
<br>
<br>
システムルートディレクトリに対して、Linux PCに保存したRaspberry Pi向けのQtライブラリがあるディレクトリのシンボクリックリンクを作成する。
システムルートディレクトリに対して、Linux PCに保存したBanana Pi向けのQtライブラリがあるディレクトリのシンボクリックリンクを作成する。
  mkdir -p /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware
  mkdir -p /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware
  ln -s /<Qtライブラリのインストールディレクトリ> /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware
  ln -s /<Qtライブラリのインストールディレクトリ> /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware
   
   
  # シンボリックリンク名の変更
  # シンボリックリンク名の変更
  mv /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware/<Qtライブラリのインストールディレクトリ> \
  mv /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware/<Qtライブラリのインストールディレクトリ> \
     /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware/Qt_6_x_x
     /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x
<br>
<br>
Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br>
Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br>
  # Kit名に"RaspberryPi"という文字列が入っている場合のみ、Raspberry Piのシステムルートディレクトリを参照する
  # Kit名に"BananaPi"という文字列が入っている場合のみ、Banana Piのシステムルートディレクトリを参照する
  # x86 / x64のKitを使用する場合は、Raspberry Piのシステムルートディレクトリを参照しない
  # x86 / x64のKitを使用する場合は、Banana Piのシステムルートディレクトリを参照しない
  [ -n $(grep -i RaspberryPi %{ActiveProject:Kit:Name}) ] && set sysroot /<Raspberry Piのシステムルートディレクトリ>
  [ -n $(grep -i BananaPi %{ActiveProject:Kit:Name}) ] && set sysroot /<Banana Piのシステムルートディレクトリ>
   
   
  # または
  # または
   
   
  set sysroot /<Raspberry Piのシステムルートディレクトリ>
  set sysroot /<Banana Piのシステムルートディレクトリ>
<br>
<br>
これにより、Raspberry PiでQtライブラリが使用できる。<br>
これにより、Banana PiでQtライブラリが使用できる。<br>
<br><br>
<br><br>


914行目: 918行目:
<br>
<br>
システムルートのライブラリディレクトリ内のQt6関連の共有ライブラリファイルを別のディレクトリに移動させる。<br>
システムルートのライブラリディレクトリ内のQt6関連の共有ライブラリファイルを別のディレクトリに移動させる。<br>
  cd /<Raspberry_Piのシステムルート>/usr/lib/aarch64-linux-gnu
  cd /<Banana Piのシステムルート>/usr/lib/aarch64-linux-gnu
  mkdir -p Qt6_Backup
  mkdir -p Qt6_Backup
  mv libQt6*.so* Qt6_Backup/
  mv libQt6*.so* Qt6_Backup/
931行目: 935行目:
<br>
<br>
そのため、ターゲットデバイスのOSをアップグレード、あるいは、Waylandライブラリをソースコードからインストールする必要がある。<br>
そのため、ターゲットデバイスのOSをアップグレード、あるいは、Waylandライブラリをソースコードからインストールする必要がある。<br>
例えば、Raspberry Pi OS bullseyeを使用している場合はBookwormにアップグレードする。<br>
<br><br>
<br><br>