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

 
(同じ利用者による、間の16版が非表示)
29行目: 29行目:
! colspan="3" style="background-color:#44CC99;" | 参考書
! colspan="3" style="background-color:#44CC99;" | 参考書
|- style="text-align: center;"
|- style="text-align: center;"
| style="width: 33%" | <center><html><a href="https://www.amazon.co.jp/Introducing-Qt-Learn-Mobile-Desktop/dp/148427489X?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-2&linkCode=ll1&tag=presire22-22&linkId=3053b20cf3556f8bb315f4f3fd04fdbe&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/61OPCSNS4VL._SL1180_.jpg" ></a></html><br>[https://www.amazon.co.jp/Introducing-Qt-Learn-Mobile-Desktop/dp/148427489X?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-2&linkCode=ll1&tag=presire22-22&linkId=3053b20cf3556f8bb315f4f3fd04fdbe&language=ja_JP&ref_=as_li_ss_tl Introducing Qt 6<br>C++でモバイルとデスクトップ向けのアプリとゲームを作ることを学ぶ]</center>
| style="width: 33%" | <center><html><a href="https://www.amazon.co.jp/Introducing-Qt-Learn-Mobile-Desktop/dp/148427489X?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-2&linkCode=ll1&tag=presire2-22&linkId=3053b20cf3556f8bb315f4f3fd04fdbe&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/61OPCSNS4VL._SL1180_.jpg" ></a></html><br>[https://www.amazon.co.jp/Introducing-Qt-Learn-Mobile-Desktop/dp/148427489X?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-2&linkCode=ll1&tag=presire2-22&linkId=3053b20cf3556f8bb315f4f3fd04fdbe&language=ja_JP&ref_=as_li_ss_tl Introducing Qt 6<br>C++でモバイルとデスクトップ向けのアプリとゲームを作ることを学ぶ]</center>
| style="width: 33%" | <center><html><a href="https://www.amazon.co.jp/Cross-Platform-Development-Modern-applications-interfaces/dp/1800204582?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-8&linkCode=ll1&tag=presire22-22&linkId=07b919e3516320e5ca209c74e325c740&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/61meHwEaCLS._SL1360_.jpg" ></a></html><br>[https://www.amazon.co.jp/Cross-Platform-Development-Modern-applications-interfaces/dp/1800204582?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-8&linkCode=ll1&tag=presire22-22&linkId=07b919e3516320e5ca209c74e325c740&language=ja_JP&ref_=as_li_ss_tl Cross-Platform Development with Qt 6 and Modern C++<br>プラットフォーム依存性を気にすることなく、<br>モダンなグラフィカルユーザーインターフェースを持つアプリケーションを設計・構築する]</center>
| style="width: 33%" | <center><html><a href="https://www.amazon.co.jp/Cross-Platform-Development-Modern-applications-interfaces/dp/1800204582?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-8&linkCode=ll1&tag=presire2-22&linkId=07b919e3516320e5ca209c74e325c740&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/61meHwEaCLS._SL1360_.jpg" ></a></html><br>[https://www.amazon.co.jp/Cross-Platform-Development-Modern-applications-interfaces/dp/1800204582?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611690&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-8&linkCode=ll1&tag=presire2-22&linkId=07b919e3516320e5ca209c74e325c740&language=ja_JP&ref_=as_li_ss_tl Cross-Platform Development with Qt 6 and Modern C++<br>プラットフォーム依存性を気にすることなく、<br>モダンなグラフィカルユーザーインターフェースを持つアプリケーションを設計・構築する]</center>
| style="width: 33%" | <center><html><a href="https://www.amazon.co.jp/Guide-Qt-Beginners/dp/B08XLLDZSG?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611709&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-18&linkCode=ll1&tag=presire22-22&linkId=505bfbc1b686c54000759827f92a0c5d&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/51J026p9D8S._SL1360_.jpg" ></a></html><br>[https://www.amazon.co.jp/Guide-Qt-Beginners/dp/B08XLLDZSG?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611709&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-18&linkCode=ll1&tag=presire22-22&linkId=505bfbc1b686c54000759827f92a0c5d&language=ja_JP&ref_=as_li_ss_tl A Guide to Qt 6<br>Qt 6の初心者向けガイド]</center>
| style="width: 33%" | <center><html><a href="https://www.amazon.co.jp/Guide-Qt-Beginners/dp/B08XLLDZSG?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611709&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-18&linkCode=ll1&tag=presire2-22&linkId=505bfbc1b686c54000759827f92a0c5d&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/51J026p9D8S._SL1360_.jpg" ></a></html><br>[https://www.amazon.co.jp/Guide-Qt-Beginners/dp/B08XLLDZSG?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2XOJ92BZ9LJHM&keywords=Qt6&qid=1683611709&s=english-books&sprefix=qt6%2Cenglish-books%2C156&sr=1-18&linkCode=ll1&tag=presire2-22&linkId=505bfbc1b686c54000759827f92a0c5d&language=ja_JP&ref_=as_li_ss_tl A Guide to Qt 6<br>Qt 6の初心者向けガイド]</center>
|}
|}
</center>
</center>
39行目: 39行目:
Linux PCにおいて、以下の依存関係のライブラリをインストールする。<br>
Linux PCにおいて、以下の依存関係のライブラリをインストールする。<br>
(Texinfoは、GNU公式Webサイトにアクセスして、ソースコードからインストールすることを推奨する)<br>
(Texinfoは、GNU公式Webサイトにアクセスして、ソースコードからインストールすることを推奨する)<br>
# SUSE
  sudo zypper install autoconf automake cmake unzip tar git wget pkg-config gperf gcc gcc-c++ \
  sudo zypper install autoconf automake cmake unzip tar git wget pkg-config gperf gcc gcc-c++ \
                     gawk bison openssl flex figlet pigz ncurses-devel ncurses5-devel texinfo
                     gawk bison openssl flex figlet pigz ncurses-devel ncurses5-devel texinfo
   
   
                     libicu-devel libopus-devel openjpeg2-devel pciutils-devel libpciaccess-devel libxshmfence-devel python3-html5lib \ # QtWebEngineをインストールする場合
                    # QtWebEngineをインストールする場合
                     libvpx-devel                                                                                                       # QtWebEngineをインストールする場合
                     libicu-devel libopus-devel openjpeg2-devel pciutils-devel libpciaccess-devel libxshmfence-devel \
                     libvpx-devel python3-html5lib
   
   
                     ffmpeg-4-libavcodec-devel ffmpeg-4-libavdevice-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavformat-devel       \ # QtWebEngineをインストールする場合 (デフォルトパッケージ)
                    # QtWebEngineをインストールする場合 (デフォルトパッケージ)
                     ffmpeg-4-libavresample-devel ffmpeg-4-libavutil-devel ffmpeg-4-libpostproc-devel ffmpeg-4-libswresample-devel   \ # QtWebEngineをインストールする場合 (デフォルトパッケージ)
                     ffmpeg-4-libavcodec-devel ffmpeg-4-libavdevice-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavformat-devel   \
                     ffmpeg-4-libswscale-devel ffmpeg-4-private-devel                                                                   # QtWebEngineをインストールする場合 (デフォルトパッケージ)
                     ffmpeg-4-libavresample-devel ffmpeg-4-libavutil-devel ffmpeg-4-libpostproc-devel ffmpeg-4-libswresample-devel \
                     ffmpeg-4-libswscale-devel ffmpeg-4-private-devel
   
   
                     ffmpeg-6-libavcodec-devel ffmpeg-6-libavdevice-devel ffmpeg-6-libavfilter-devel ffmpeg-6-libavformat-devel       \ # QtWebEngineをインストールする場合 (Packmanパッケージ)
                    # QtWebEngineをインストールする場合 (Packmanパッケージ)
                     ffmpeg-6-libavresample-devel ffmpeg-6-libavutil-devel ffmpeg-6-libpostproc-devel ffmpeg-6-libswresample-devel   \ # QtWebEngineをインストールする場合 (Packmanパッケージ)
                     ffmpeg-6-libavcodec-devel ffmpeg-6-libavdevice-devel ffmpeg-6-libavfilter-devel ffmpeg-6-libavformat-devel   \
                     ffmpeg-6-libswscale-devel ffmpeg-6-private-devel                                                                   # QtWebEngineをインストールする場合 (Packmanパッケージ)
                     ffmpeg-6-libavresample-devel ffmpeg-6-libavutil-devel ffmpeg-6-libpostproc-devel ffmpeg-6-libswresample-devel \
                     ffmpeg-6-libswscale-devel ffmpeg-6-private-devel
<br>
<br>
<u>GCC ARMツールチェーンにおいて、GCC 8以降が必要である</u><br>
<u>GCC ARMツールチェーンにおいて、GCC 8以降が必要である</u><br>
252行目: 256行目:
<br>
<br>
* 上表のライブラリを全てインストールする場合
* 上表のライブラリを全てインストールする場合
*: <code>sudo pacman -S --needed bluez bluez-libs openjpeg2 libjpeg-turbo libpng libtiff libmng gstreamer gstreamermm gst-plugins-base gst-plugins-base-libs gst-plugins-good \</code>
sudo pacman -S --needed bluez bluez-libs openjpeg2 libjpeg-turbo libpng libtiff libmng                     \
*: <code>gst-plugins-bad gst-plugins-bad-libs gst-plugins-ugly gst-libav gst-plugin-wpe gst-plugin-pipewire gst-plugin-gtk qt-gstreamer gst-plugin-qmlgl gst-plugin-opencv alsa-lib \</code>
                        gstreamer gstreamermm gst-plugins-base gst-plugins-base-libs gst-plugins-good     \
*: <code>pulseaudio-alsa openal flite libserialport sensorfw unixodbc sqlite libcups xorg-xwayland flex bison gperf readline nss libdrm libxml2 libxml++ libxslt minizip jsoncpp \</code>
                        gst-plugins-bad gst-plugins-bad-libs gst-plugins-ugly gst-libav gst-plugin-wpe     \
*: <code>lcms2 libevent protobuf protobuf-c opus libvpx at-spi2-core at-spi2-atk lksctp-tools</code>
                        gst-plugin-pipewire gst-plugin-gtk qt-gstreamer gst-plugin-qmlgl gst-plugin-opencv \
                        alsa-lib pulseaudio-alsa openal \
                        flite libserialport sensorfw   \
                        unixodbc sqlite libcups         \
                        xorg-xwayland flex bison gperf readline nss libdrm libxml2 libxml++ libxslt minizip jsoncpp \
                        lcms2 libevent protobuf protobuf-c opus libvpx at-spi2-core at-spi2-atk lksctp-tools
<br>
<br>
次のセクションにおいて、rsyncコマンドを使用してLinux PCとPinePhoneのファイルを同期する。<br>
次のセクションにおいて、rsyncコマンドを使用してLinux PCとPinePhoneのファイルを同期する。<br>
321行目: 330行目:
  vi <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++/qmake.conf
  vi <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++/qmake.conf
<br>
<br>
<syntaxhighlight lang="make">
  # qmake.confファイル
  # qmake.confファイル
   
   
373行目: 383行目:
   
   
  load(qt_config)
  load(qt_config)
</syntaxhighlight>
<br><br>
<br><br>


619行目: 630行目:
  -DCMAKE_STAGING_PREFIX=<PinePhone向けQt 6ライブラリを配置するディレクトリ>                                        \
  -DCMAKE_STAGING_PREFIX=<PinePhone向けQt 6ライブラリを配置するディレクトリ>                                        \
  -DCMAKE_INSTALL_PREFIX=<Qtソフトウェアを配置するディレクトリ>                                                    \
  -DCMAKE_INSTALL_PREFIX=<Qtソフトウェアを配置するディレクトリ>                                                    \
  -DCMAKE_PREFIX_PATH=<PinePhone向けQt 6ライブラリを配置するディレクトリ>
  -DCMAKE_PREFIX_PATH=$SYSROOT/usr/lib/aarch64-linux-gnu </syntaxhighlight>
</syntaxhighlight>
<br>
<br>
Qt 6をクロスビルドおよびインストールする。<br>
Qt 6をクロスビルドおよびインストールする。<br>
685行目: 695行目:
<br>
<br>
この時、以下に示すファイルを編集する。<br>
この時、以下に示すファイルを編集する。<br>
これにより、ターゲットが存在する場合のみ依存関係を追加するようになる。<br>
  vi /<Qt 6のソースコードがあるディレクトリ>/qttools/src/assistant/qhelpgenerator/CMakeLists.txt
  vi /<Qt 6のソースコードがあるディレクトリ>/qttools/src/assistant/qhelpgenerator/CMakeLists.txt
<br>
<br>
  <syntaxhighlight lang="cmake">  
  <syntaxhighlight lang="cmake">
  # /<Qt 6のソースコードがあるディレクトリ>/qttools/src/assistant/qhelpgenerator/CMakeLists.txtファイル 66行目
  # /<Qt 6のソースコードがあるディレクトリ>/qttools/src/assistant/qhelpgenerator/CMakeLists.txtファイル 66行目
   
   
  # 編集前
  # 編集前
  add_dependencies(qhelpgenerator ${needed_plugins})
  else() # QT_BUILD_SHARED_LIBS
    if(QT_SUPERBUILD)
      add_dependencies(qhelpgenerator ${needed_plugins})
    endif()
endif()
   
   
  # 編集後
  # 編集後
  #add_dependencies(qhelpgenerator ${needed_plugins})
  else() # QT_BUILD_SHARED_LIBS
    if(QT_SUPERBUILD)
      if(TARGET qhelpgenerator)
          add_dependencies(qhelpgenerator ${needed_plugins})
      endif()
    endif()
endif()
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== ビルドエラー関連 : Qt Toolのqhelpgeneratorに関するエラー ====
 
==== ビルドエラー関連 : Qt Toolのqhelpgeneratorに関するエラー 2 ====
ビルド時において、以下に示すようなエラーが出力される場合がある。<br>
ビルド時において、以下に示すようなエラーが出力される場合がある。<br>
  error: 'google::protobuf::FileDescriptor::Syntax google::protobuf::FileDescriptor::syntax() const'
  error: 'google::protobuf::FileDescriptor::Syntax google::protobuf::FileDescriptor::syntax() const'
847行目: 869行目:
<br>
<br>
これにより、PinePhoneでQtライブラリが使用できる。<br>
これにより、PinePhoneでQtライブラリが使用できる。<br>
<br><br>
== CLion / Qt 6との連携 ==
==== ツールチェーンの設定 ====
[ファイル]メニューバー - [設定]を選択する。<br>
[設定]画面の左ペインにある[ビルド、実行、デプロイ] - [ツールチェーン]を選択する。<br>
[設定]画面の右ペインにある[+]アイコンを選択して、[システム]を選択する。<br>
<br>
* ツールチェーンの設定項目
** [名前]
**: 任意の名前を入力する。
** [CMake:]
**: PinePhone向けQtライブラリのビルドに使用したCMakeファイルのパスを入力する。
** [ビルドツール:]
**: PinePhone向けQtライブラリのビルドに使用したNinjaファイルのパスを入力する。
** [C コンパイラー:]
**: PinePhone向けQtライブラリのビルドに使用したGCCファイルのパスを入力する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc
** [C++ コンパイラー:]
**: PinePhone向けQtライブラリのビルドに使用したG++ファイルのパスを入力する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-g++
** [デバッガー:]
**: GCCツールチェーンのGDBファイルのパスを入力する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gdb
<br>
[設定]画面の右ペイン下部にある[適用]ボタンを押下する。<br>
<br>
==== CMakeの設定 ====
[ファイル]メニューバー - [設定]を選択する。<br>
[設定]画面の左ペインにある[ビルド、実行、デプロイ] - [CMake]を選択する。<br>
[設定]画面の右ペインにある[+]アイコンを選択する。<br>
<br>
* CMakeの設定項目
** [名前]
**: 任意の名前を入力する。
** [ビルドタイプ:]プルダウン
**: [Debug]または[Release]を選択する。
** [ツールチェーン:]プルダウン
**: 上記で設定したツールチェーン名を選択する。
** [ジェネレーター:]プルダウン
**: [デフォルトを使用する]を選択する。
**: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc
** [環境:]<br>[環境:]のテキストアイコンを選択して、[環境設定]画面を開く。<br>画面右上の[+]ボタンを押下して、各環境変数を設定する。
*** CMAKE_C_COMPILER
***: PinePhone向けQtライブラリのビルドに使用したGCCファイルのパスを入力する。
***: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc
*** CMAKE_CXX_COMPILER
***: PinePhone向けQtライブラリのビルドに使用したG++ファイルのパスを入力する。
***: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-g++
*** CMAKE_PREFIX_PATH
***: PinePhone向けQtライブラリのインストールディレクトリのパスを入力する。
***: 例: <PinePhone向けQtライブラリのインストールディレクトリ>
*** CMAKE_TOOLCHAIN_FILE
***: PinePhone向けQtライブラリのインストールディレクトリにあるビルド向けツールチェーンファイルのパスを入力する。
***: 例: /<PinePhone向けQtライブラリのインストールディレクトリ>/lib/cmake/Qt6/qt.toolchain.cmake
*** QT_QMAKE_EXECUTABLE
***: PinePhone向けQtライブラリのインストールディレクトリにあるqmakeファイルのパスを入力する。
***: 例: /<PinePhone向けQtライブラリのインストールディレクトリ>/bin/qmake-host
<br>
[設定]画面の右ペイン下部にある[適用]ボタンを押下する。<br>
<br>
==== SSHの設定 ====
[ファイル]メニューバー - [設定]を選択する。<br>
[設定]画面の左ペインにある[ツール] - [SSH 構成]を選択する。<br>
[設定]画面の右ペインにある[+]アイコンを選択する。<br>
<br>
* SSH構成の設定項目
** [ホスト:]
**: PinePhoneのIPアドレスまたはホスト名を入力する。
** [ユーザー名:]
**: PinePhoneのユーザ名を入力する。
** [認証タイプ:]プルダウン
**: [パスワード]または[キーペア]を選択する。
** [秘密鍵ファイル:] (キーペアを選択した場合)
**: 秘密鍵ファイルのパスを入力する。
** [パスフレーズ:] (キーペアを選択した場合、かつ、パスフレーズを設定した場合)
**: 秘密鍵のパスフレーズを入力する。
** [構成ファイル ~/.ssh/configの構文解析]チェックボックス
**: 任意
<br>
[接続テスト]ボタンを押下して、PinePhoneにSSH接続する。<br>
<br>
[設定]画面の右ペイン右下にある[適用]ボタンを押下する。<br>
<br>
==== 各プロジェクトの設定 ====
CLionを起動して、[ファイル]メニューバー - [新規] - [プロジェクト...]を選択する。<br>
[新規プロジェクト]画面から、[Qt Console 実行可能ファイル]または[Qt Widgets 実行可能ファイル]を選択する。<br>
<br>
新規プロジェクトの作成後、[実行]メニューバー - [実行構成の編集...]を選択する。<br>
[実行/デバッグ構成]画面が開くので、画面左上にある[+]ボタンを押下して、[リモート GDB サーバー]を選択する。<br>
画面左ペインに[リモート GDB サーバー]が追加される。<br>
画面左ペインに[リモート GDB サーバー]を選択して、各種設定を行う。<br>
<br>
* [ターゲット:]プルダウン
*: プロジェクト名を選択する。
* [実行可能ファイル:]プルダウン
*: プロジェクト名を選択する。
* [GDB:]プルダウン
*: 上記のツールチェーンの作成セクションで設定したGDBを選択する。
* [資格情報:]プルダウン
*: 上記のSSHの設定セクションで設定したSSHを選択する。
* [実行可能ファイル...]ラジオボタン
*: 任意
* [アップロードパス:]
*: 実行可能バイナリが配置されるPinePhone上のディレクトリを入力する。
*: 例: /home/<PinePhoneのユーザ名>/CLion/Sample1/debug
* ['target remote' ...]
*: 自動的に入力される。
*: 例: <IPアドレスまたはホスト名>:1234
* [GDB サーバー引数:]
*: Qt WidgetsまたはQMLを使用するプロジェクトの場合、デバッグまたは実行時において、実行可能バイナリに<code>-platform wayland</code>オプションを付加する必要がある。
*: 例: <code>:<GDBサーバのポート番号 例: 1234> /<実行可能バイナリが配置されるPinePhone上のディレクトリ>/debug/<実行バイナリのファイル名> -platform wayland</code>
<br>
次に、[拡張 GDB サーバーオプション]項目を設定する。<br>
この設定は、PinePhoneにアップロードしたQtライブラリにおいて、デバッグまたは実行に関する設定を行う。<br>
* [作業ディレクトリ:]
*: 何も入力しない。
* [環境変数:]<br>[環境変数:]項目の右にあるテキストアイコンを選択する。<br>[環境変数]画面が開くので、画面左上にある[+]ボタンを押下して各種設定を入力する。
** DISPLAY
**: :0
** QT_QPA_PLATFORMTHEME
**: Qt 6の場合 : qt6ct
** PATH
**: PinePhone上のQt6ライブラリをアップロードしたbinディレクトリのパスを入力する。
**: 例: /<Qt6ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
** LD_LIBRARY_PATH
**: PinePhone上のQt6ライブラリをアップロードしたlibディレクトリのパスを入力する。
**: 例: /<Qt6ライブラリをアップロードしたディレクトリ>/lib:/<Qt6ライブラリをアップロードしたディレクトリ>/plugins/qmltooling
** QT_PLUGIN_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/plugins
** QT_QPA_PLATFORM_PLUGIN_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/plugins/platforms
** QML_IMPORT_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/qml
** QML2_IMPORT_PATH
**: /<Qt6ライブラリをアップロードしたディレクトリ>/qml
** QT_DEBUG_PLUGINS
**: 0または1を入力する。
** LANG
**: 日本語を設定する場合は、<code>ja_JP.UTF-8</code>と入力する。
<br>
また、[拡張 GDB サーバーオプション]項目の設定は、プロジェクトディレクトリ内の<u>.idea/runConfigurations/<プロジェクト名>.xml</u>ファイルに保存されている。<br>
このファイルを直接編集することにより、上記の設定を行うこともできる。<br>
<br>
CLion上で上記の設定を行うには煩雑なため、ファイルを直接編集することを推奨する。<br>
cd <プロジェクトディレクトリ>
vi .idea/runConfigurations/<プロジェクト名>.xml
<br>
<syntaxhighlight lang="xml">
<!-- .idea/runConfigurations/<プロジェクト名>.xml -->
<component name="ProjectRunConfigurationManager">
  <configuration ...略>
    <envs>
      <env name="DISPLAY" value=":0" />
      <env name="LANG" value="ja_JP.UTF-8" />
      <env name="QML2_IMPORT_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/qml" />
      <env name="QML_IMPORT_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/qml" />
      <env name="QT_DEBUG_PLUGINS" value="0" />
      <env name="QT_PLUGIN_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/plugins" />
      <env name="QT_QPA_PLATFORM_PLUGIN_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/plugins/platforms" />
      <env name="QT_QPA_PLATFORMTHEME" value="qt6ct" />
      <env name="LD_LIBRARY_PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/lib:/<Qt6ライブラリをアップロードしたディレクトリ>/plugins/qmltooling" />
      <env name="PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" />
    </envs>
    <!-- ...略 -->
  </configuration>
</component>
</syntaxhighlight>
<br>
==== GDBの設定 ====
プロジェクトにデバッグのためのより多くの設定が必要な場合、デバッガの初期化ファイル (GDBの場合は.gdbinit、LLDBの場合は.lldbinit) をプロジェクトディレクトリ直下に作成する。<br>
このファイルは、他のプロジェクトと一緒にVCSで共有することもできる。<br>
<br>
一般的に、GDB / LLDBは起動時に初期化ファイルを一定の順序で読み込む。<br>
まず、デバッガはユーザのホームディレクトリにある初期化ファイルを探して、次に、現在のプロジェクトディレクトリ直下にある初期化ファイルを探す。<br>
<br>
ただし、デフォルトの設定では、セキュリティ上の理由から、プロジェクト固有の初期化ファイルからのコマンドは実行されない。<br>
そのため、ホームディレクトリの初期化ファイルである<u>~/.gdbinit</u>ファイルまたは<u>~/.lldbinit</u>ファイルを、以下に示すように編集する。<br>
vi ~/.gdbinit  または  vi ~/.lldbinit
<br>
<syntaxhighlight lang="sh">
# ~/.gdbinitファイル  または  ~/.lldbinitファイル
set auto-load safe-path /
# または
set auto-load local-gdbinit on
add-auto-load-safe-path /
</syntaxhighlight>
<br>
次に、プロジェクトディレクトリの直下に.gdbinitファイルを作成する。<br>
cd <プロジェクトディレクトリ>
vi .gdbinit  または  vi .lldbinit
<br>
<syntaxhighlight lang="sh">
# /<プロジェクトディレクトリ>/.gdbinitファイル  または  /<プロジェクトディレクトリ>/.lldbinitファイル
set sysroot <PinePhoneのシステムルートディレクトリ>
</syntaxhighlight>
<br>
CLionを起動して、任意のプロジェクトを開く。<br>
CLionのメイン画面左にあるプロジェクトに.gdbinitファイル、または、.lldbinitファイルが追加されているかどうかを確認する。<br>
<br><br>
<br><br>


873行目: 1,102行目:
<u>Bluetoothモジュールを動作させるにはD-Bus機能が必要である。</u><br>
<u>Bluetoothモジュールを動作させるにはD-Bus機能が必要である。</u><br>
<br>
<br>
==== ビルドエラー : libQt6DBusに関するエラー ====
以下に示すようなエラーが発生する場合がある。<br>
libQt6DBus.so.6: undefined reference to
`QtPrivate::QPropertyBindingData::notifyObserver_helper(QUntypedPropertyData*, QBindingStorage*, QPropertyObserverPointer, QVarLengthArray<QBindingObserverPtr, 256ll>&) const@Qt_6`
<br>
システムルート内の既存のQt6ライブラリを一時的に隔離する。<br>
これにより、ビルドプロセスが誤ったライブラリを参照することを防ぐ。<br>
<br>
システムルートのライブラリディレクトリ内のQt6関連の共有ライブラリファイルを別のディレクトリに移動させる。<br>
cd /<Raspberry_Piのシステムルート>/usr/lib/aarch64-linux-gnu
mkdir -p Qt6_Backup
mv libQt6*.so* Qt6_Backup/
<br>
これにより、クロスコンパイル時に古いQt 6ライブラリが誤ってリンクされることを防ぐ。<br>
<br>
==== libstdc++のエラー ====
==== libstdc++のエラー ====
デバッグ時において、以下に示すようなエラーが出力される場合はある。<br>
デバッグ時において、以下に示すようなエラーが出力される場合はある。<br>
912行目: 1,157行目:
<br><br>
<br><br>


{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:PinePhone]][[カテゴリ:Qt]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:PinePhone]][[カテゴリ:Qt]]