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

ページの作成:「== 概要 == Qt 6のインストール手順およびクロスコンパイル手順を記載する。<br> <br><br> == 通常のインストール == ==== 依存関係のライブラリのインストール ==== Qtの実行に必要な依存関係のライブラリをインストールする。<br> これらのライブラリは不要な可能性がある。(調査中)<br> sudo zypper install Mesa-devel Mesa-KHR-devel または sudo zypper install Mesa-KHR-devel…」
 
文字列「presire220a-22」を「presire2-22」に置換
(同じ利用者による、間の115版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
Qt 6のインストール手順およびクロスコンパイル手順を記載する。<br>
Qtは、デスクトップ、組み込み、モバイルプラットフォーム向けのソフトウェアやユーザーインターフェイスの作成を効率化するために設計されたツールを備えた完全な開発フレームワークである。<br>
<br>
Qt 6.2 LTSのサポート期間は、2024年9月30日まで、Qt 6.5 LTSのサポート期間は2026年3月30日までである。<br>
<br>
Qtライセンスを購入するには、http://www.qt.io/download/ を参照すること。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|-
! colspan="3" style="background-color:#44CC99;" | 参考書
|- 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=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=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=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>
<br><br>
 
== Qtモジュール ==
==== Qtビルディングブロック ====
Qt 6は多数のモジュールから構成されている。<br>
一般的に、モジュールは開発者が使用するためのライブラリである。<br>
<br>
いくつかのモジュールは、Qt対応プラットフォームで必須であり、Qt Essentials Modulesと呼ばれている。<br>
その他のモジュールはオプションで、Qt Add-on Modulesと呼ばれている。<br>
開発者の大半はQt Add-on Modulesを使用する機会はあまり無いかもしれないが、一般的な課題に対する貴重な解決策を提供してくれるため、知っておいて損はない。<br>
<br>
==== Qt Essentials Modules ====
Qt Essentials Modulesは、Qtが使用されるプラットフォームには必須である。<br>
Qt / QMLプログラミングを始めるための最小限のQt6モジュールセットである。<br>
<br>
Qt Quick 2を使用して最新のQt6アプリケーションを開発するための基礎を提供している。<br>
モジュールの全リストは、Qtドキュメントモジュールリスト (https://doc.qt.io/qt-6/qtmodules.html#qt-essentials) を参照すること。<br>
<br>
* Qt Core
*: 他のモジュールで使用される非グラフィカルなコアクラス。
* Qt D-BUS
*: LinuxのD-Busプロトコルでプロセス間通信を行うためのクラス。
* Qt GUI
*: GUIコンポーネントのベースクラス。
*: これは、OpenGLを含む。
* Qt Network
*: ネットワークプログラミングをより簡単に、よりポータブルにするためのクラス。
* Qt QML
*: QMLとJavaScript言語用のクラス。
* Qt Quick
*: カスタムユーザーインターフェースを持つ、高度にダイナミックなアプリケーションを構築するための宣言型フレームワーク。
* Qt Quick Controls
*: デスクトップ、組み込み、モバイルデバイス用の高性能なユーザーインターフェイスを作成するための軽量なQMLタイプを提供する。
*: これらの型はシンプルなスタイリングアーキテクチャを採用しており、非常に効率的である。
* Qt Quick Layouts
*: Layoutsは、Qt Quick 2ベースのアイテムをユーザーインターフェイスに配置するためのアイテムである。
* Qt Quick Test
*: QMLアプリケーション用のユニットテストフレームワークで、テストケースはJavaScriptの関数として記述される。
* Qt Test
*: Qtアプリケーションやライブラリを単体テストするためのクラス。
* Qt Widgets
*: C++ウィジェットであり、Qt GUIを拡張するためのクラス。
<br>
==== Qt Add-On Modules ====
Qt Essentials Modulesモジュールの他に、Qtは特定の目的に対応する追加モジュールを提供している。<br>
多くのアドオンモジュールは機能が複雑で後方互換性のために存在するか、特定のプラットフォームにのみ適用可能である。<br>
<br>
利用可能なアドオンモジュールの一覧を以下に示すが、[https://doc.qt.io/qt-6/qtmodules.html Qtの公式ドキュメント]を参照して、全てのアドオンモジュールを理解すること。<br>
* Network
*: Qt Bluetooth / Qt Network Authorization UI Components
*: Qt Quick 3D / Qt Quick Timeline / Qt Charts / Qt Data Visualization / Qt Lottie Animation / Qt Virtual Keyboard
* グラフィックス
*:: Qt 3D / Qt Image Formats / Qt OpenGL / Qt Shader Tools / Qt SVG / Qt Wayland Compositor
* ヘルパー
*: Qt5コア互換API / Qt Concurrent / Qt Help / Qt Print Support / Qt Quick Widgets / Qt SCXML / Qt SQL / Qt State Machine / Qt UI Tools / Qt XML
<br><br>
 
== Qt ライセンス ==
Qtは、様々なユーザのニーズに対応できるよう、様々なライセンスオプションが用意されている。<br>
<br>
商用ライセンスでライセンスされたQtは、第三者とソースコードを共有したくない場合やGNU LGPL version 3の条項に準拠できない場合、プロプライエタリ / 商用ソフトウェアの開発に適している。<br>
LGPL version 3の下でライセンスされたQtは、GNU LGPL version 3またはGNU GPL version 3の条項と条件に従うことができれば、Qtアプリケーションの開発に適している。<br>
<br>
Qtマーケットプレイスライセンス契約に基づいてライセンスされたQtコンポーネントは、<br>
商用またはGNU LGPL version 3またはGNU GPL version 3の条件に基づいてライセンスされたQtソフトウェアコンポーネントと共通のQtアプリケーションの開発に適している。<br>
<br>
Qtには、元の開発者から特定のオープンソースライセンスの下でライセンスされているサードパーティのコードも含まれている。<br>
また、Qtのサンプルは、The Qt Companyの商用ライセンスおよびBSD 3条項ライセンスの下で入手可能である。<br>
<br>
Qtライセンスの概要については、http://qt.io/licensing/ を参照すること。<br>
<br><br>
<br><br>


7行目: 92行目:
Qtの実行に必要な依存関係のライブラリをインストールする。<br>
Qtの実行に必要な依存関係のライブラリをインストールする。<br>
これらのライブラリは不要な可能性がある。(調査中)<br>
これらのライブラリは不要な可能性がある。(調査中)<br>
  sudo zypper install Mesa-devel Mesa-KHR-devel
# RHEL
sudo dnf install mesa-libOSMesa-devel
# SUSE
  sudo zypper install Mesa-devel Mesa-KHR-devel \
                    vulkan-headers  # Vulkanを使用するプロジェクト、および、Vulkanバックエンドを利用する可能性のある場合
  または
  または
  sudo zypper install Mesa-KHR-devel Mesa-devel Mesa-dri-devel Mesa-libEGL-devel Mesa-libGL-devel Mesa-libGLESv1_CM-devel Mesa-libGLESv2-devel \
  sudo zypper install Mesa-KHR-devel Mesa-devel Mesa-dri-devel Mesa-libEGL-devel Mesa-libGL-devel Mesa-libGLESv1_CM-devel Mesa-libGLESv2-devel   \
                     Mesa-libglapi-devel kbproto-devel libOSMesa-devel libOSMesa8 libX11-devel libXau-devel libdrm-devel libgbm-devel \
                     Mesa-libglapi-devel kbproto-devel libOSMesa-devel libOSMesa8 libX11-devel libXau-devel libdrm-devel libgbm-devel           \
                     libglvnd-devel libxcb-devel libxcb-screensaver0 libxcb-xf86dri0 libxcb-xtest0 libxcb-xvmc0 pthread-stubs-devel xproto-devel
                     libglvnd-devel libxcb-devel libxcb-screensaver0 libxcb-xf86dri0 libxcb-xtest0 libxcb-xvmc0 pthread-stubs-devel xproto-devel \
                    xcb-util-cursor-devel xcb-util-image-devel xcb-util-renderutil-devel                                                        \
                    vulkan-headers  # Vulkanを使用するプロジェクト、あるいは、Vulkanバックエンドを使用する場合
<br>
* Qt 6におけるVulkan headerの必要性
*: Qt 6では、グラフィックスバックエンドの1つとしてVulkanをサポートしている。
*: そのため、Vulkanを使用するプロジェクトやVulkanバックエンドを利用する可能性のある場合には、Vulkan headerが必要になる。
* Vulkan headerの用途
*: Vulkan headerは、以下に示すような目的で使用される。
*: Vulkan APIの定義: 関数プロトタイプ、構造体、定数等の定義を提供する。
*: Vulkanを使用したグラフィックス処理: 3Dレンダリングや計算処理を行う際に必要な関数や構造体を定義する。
*: Qt 6のVulkanバックエンド: Qt 6がVulkanバックエンドを使用する際に必要な情報を提供する。
<br>
Vulkanサポートを無効にするいくつかの方法を、以下に示す。<br>
* Qt変数を使用して、Vulkanサポートを無効にする。
*: set(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
*: set(CMAKE_DISABLE_FIND_PACKAGE_Vulkan TRUE)
*: <br>
* find_packageコマンドを使用して、Vulkanサポートを無効にする。
*: 特定のQtライブラリでVulkanが使用されている場合、該当ライブラリのfind_packageコマンドの実行時にOPTIONALフラグを追加する。
*: これにより、Vulkan headerの検索に失敗してもエラーにはならない。
*: find_package(Qt6 COMPONENTS Gui OPTIONAL_COMPONENTS Vulkan)
*: <br>
* 特定のQt機能を無効にして、Vulkanサポートを無効にする。
*: 特定のQt機能がVulkanを必要としている場合、それらの機能を無効にする。
*: set(QT_FEATURE_vulkan OFF CACHE BOOL "" FORCE)
<br>
<br>
==== Qtのダウンロード ====
==== Qtのダウンロード ====
最新版のQtをダウンロードするため、以下のコマンドを実行する。<br>
最新版のQtをダウンロードするため、以下のコマンドを実行する。<br>
25行目: 141行目:
<br>
<br>
次に、GCCおよびmake、付随するライブラリをインストールする。<br>
次に、GCCおよびmake、付随するライブラリをインストールする。<br>
  # CentOS
  # RHEL
  sudo yum groupinstall "Development tools"
  sudo dnf groupinstall "Development tools"
   
   
  # SUSE
  # SUSE
131行目: 247行目:
  # cmakeを使用する場合
  # cmakeを使用する場合
  cmake --install ..
  cmake --install ..
<br><br>
== Qtのインストールディレクトリの設定 ==
Qtのインストールディレクトリを環境変数に設定することができる。<br>
この環境変数<code>QT_INSTALL_PREFIX</code>は、QtツールやビルドシステムがQtのインストールディレクトリを探す時に使用される。<br>
<syntaxhighlight lang="sh">
export QT_INSTALL_PREFIX=<Qtのインストールディレクトリ>
</syntaxhighlight>
<br>
Qtのインストールディレクトリを確認する場合は、以下に示すコマンドを実行する。<br>
qtpaths --install-prefix
<br><br>
== Qtのインストールディレクトリの指定 (CMakeコマンド) ==
CMakeを使用する場合、Qtのインストールディレクトリを指定する場合は、CMakeコマンドの<code>CMAKE_PREFIX_PATH</code>オプションを付加する。<br>
cmake -DCMAKE_PREFIX_PATH=<Qtのインストールディレクトリ> ..
<br>
または、CMakeLists.txtに明示的に設定することもできる。<br>
<syntaxhighlight lang="cmake">
set(CMAKE_PREFIX_PATH "<Qtのインストールディレクトリ>")
</syntaxhighlight>
<br><br>
<br><br>


214行目: 351行目:
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib/pkgconfig:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"</code>
#*: <br>
#*: <br>
#* Qt Creatorのビルドに使用されたQt SDKが6の場合
#* Qt Creatorのビルドに使用されたQt SDKが6の場合
220行目: 358行目:
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib/pkgconfig:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"</code>
#*: <br>
#*: <br>
#* ビルドおよびインストール
#* ビルドおよびインストール
240行目: 379行目:
#: <code>  /<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts</code>
#: <code>  /<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts</code>
<br>
<br>
==== Fcitx5を使用している場合 ====
==== Fcitx5を使用している場合 ====
fcitx5-qtライブラリ(Fcitx5)をインストールする。<br>
fcitx5-qtライブラリ(Fcitx5)をインストールする。<br>
246行目: 386行目:
#: <br>
#: <br>
# fcitx-qt5のインストールに必要な依存関係のライブラリをインストールする。
# fcitx-qt5のインストールに必要な依存関係のライブラリをインストールする。
#: <code>sudo zypper install extra-cmake-modules libxkbcommon-devel</code>
#: <code>sudo zypper install cmake extra-cmake-modules libxkbcommon-devel fcitx5-devel</code>
# fcitx-qt5のソースコードをダウンロードする。
# fcitx-qt5のソースコードをダウンロードする。
#: <code>git clone https://github.com/fcitx/fcitx5-qt</code>
#: <code>git clone https://github.com/fcitx/fcitx5-qt</code>
258行目: 398行目:
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib/pkgconfig:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"</code>
#*: <br>
#*: <br>
#* Qt Creatorのビルドに使用されたQt SDKが6の場合
#* Qt Creatorのビルドに使用されたQt SDKが6の場合
264行目: 405行目:
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export CPATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/include:$CPATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib/pkgconfig:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"</code>
#*: <code>export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"</code>
#*: <br>
#*: <br>
#* ビルドおよびインストール
#* ビルドおよびインストール
#*: <code>ENABLE_LIBRARY=$(pkg-config --exists fcitx icu-uc && echo ON || echo OFF) && \</code>
#*: <code>cmake .. \</code>
#*: <code>-DCMAKE_C_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> -DCMAKE_CXX_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> \</code>
#*: <code>-DCMAKE_BUILD_TYPE=Release \</code>
#*: <code>-DENABLE_X11=ON \  # X11を使用している場合</code>
#*: <code>-DBUILD_ONLY_PLUGIN=ON \  # プラグインのみをインストールする場合</code>
#*: <code>-DENABLE_QT4=<Qt Creatorのビルドに使用されたQt SDKが4の場合はon、それ以外はoff> \</code>
#*: <code>-DENABLE_QT5=<Qt Creatorのビルドに使用されたQt SDKが5の場合はon、それ以外はoff> \</code>
#*: <code>-DENABLE_QT6=<Qt Creatorのビルドに使用されたQt SDKが6の場合はon、それ以外はoff> \</code>
#*: <code>-DCMAKE_PREFIX_PATH=/<Qt 5のインストールディレクトリ>/<バージョン>/gcc_64  # Qt Creatorのビルドに使用されたQt SDKが5の場合</code>
#*: <code>-DCMAKE_PREFIX_PATH=/<Qt 6のインストールディレクトリ>/<バージョン>/gcc_64  # Qt Creatorのビルドに使用されたQt SDKが6の場合</code>
#*: <br>
#*: # または
#*: <br>
#*: <code>export ENABLE_LIBRARY=$(pkg-config --exists fcitx icu-uc && echo ON || echo OFF) && \</code>
#*: <code>cmake .. -DENABLE_LIBRARY=$ENABLE_LIBRARY \</code>
#*: <code>cmake .. -DENABLE_LIBRARY=$ENABLE_LIBRARY \</code>
#*: <code>-DCMAKE_C_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> -DCMAKE_CXX_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> \</code>
#*: <code>-DCMAKE_C_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> -DCMAKE_CXX_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> \</code>
283行目: 438行目:
#: <code>cp /<Qtのインストールディレクトリ>/<バージョン>/gcc_64/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so \</code>
#: <code>cp /<Qtのインストールディレクトリ>/<バージョン>/gcc_64/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so \</code>
#: <code>  /<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts</code>
#: <code>  /<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts</code>
<br><br>
== WebAssemblyの開発 ==
==== Emscripten SDKのインストール ====
Emscripten SDKは、全てのSDKのメンテナンスを実行するために使用される。<br>
SDKをインストールするのは1度だけで、その後はEmscripten SDKが全てのアップデートを行う。<br>
<br>
Emscripten SDKを使用すると、任意のSDKまたはツールをダウンロード、インストール、削除することができ、Githubで開発中の最先端のバージョンを使用することもできる。<br>
<br>
[https://github.com/emscripten-core/emsdk.git Emscripten SDKのGithub]にアクセスして、ファイルをダウンロードする。<br>
ダウンロードしたファイルを解凍する。また、必要であれば、任意のディレクトリに配置する。<br>
tar xf emsdk-<バージョン>.tar.gz
cd emsdk-<バージョン>
<br>
==== Emscripten SDKの使用方法 ====
Emscripten SDKのインストールディレクトリに移動する。<br>
<br>
* 利用可能なツールの最新のレジストリを取得する。
./emsdk update
<br>
* 最新のSDKツールをダウンロードしてインストールする。
./emsdk install latest
<br>
* 最新のSDKを指すようにコンパイラを設定する。<br>
./emsdk activate latest
<br>
==== 環境変数の設定 ====
~/.profileファイル等にEmscripten SDKの環境変数に追加する。<br>
<syntaxhighlight lang="sh">
# ~/.profileファイル等
export PATH="$HOME/InstallSoftware/Emscripten_SDK:$PATH"
export PATH="$HOME/InstallSoftware/Emscripten_SDK/upstream/emscripten:$PATH"
</syntaxhighlight>
<br>
また、emsdk_env.shファイルを実行することにより、現在のシェルに対して環境変数を追加することもできる。<br>
source "/<Emscripten SDKのインストールディレクトリ>/emsdk_env.sh"
<br><br>
<br><br>


325行目: 517行目:
アカウント設定ページ右の[Edit] - アカウント設定ページ下の[Account Termination Request] - [Delete Account]ボタンを押下する。<br>
アカウント設定ページ右の[Edit] - アカウント設定ページ下の[Account Termination Request] - [Delete Account]ボタンを押下する。<br>
<br><br>
<br><br>
== Raspberry Piのクロスコンパイル ==
Raspberry Piでクロスコンパイルを行う場合、[[インストール_-_Qt6_Raspberry_Pi]]のページを参照すること。<br>
<br><br>
== PinePhoneのクロスコンパイル ==
PinePhoneでクロスコンパイルを行う場合、[[インストール_-_Qt6_PinePhone]]のページを参照すること。<br>
<br><br>
== OpenSSL 3のインストールおよび設定 ==
Qt 6において、QNetworkAccessManagerクラス等を使用する場合、以下に示すようなエラーが発生する場合がある。<br>
qt.tlsbackend.ossl: Incompatible version of OpenSSL (built with OpenSSL >= 3.x, runtime version is < 3.x)
<br>
これは、Qt 6が古いバージョンのOpenSSLを参照しているために発生する。<br>
これを解決するには、QtオンラインインストーラからOpenSSL 3.x.xのソースコードをダウンロードして、ビルドおよびインストールすることを推奨する。<br>
<br>
まず、Qtオンラインインストーラを起動して、[コンポーネントの選択]画面から[Qt] - [Developer and Designer Tools] - [OpenSSL 3.x.x Toolkit]にチェックを入力する。<br>
[次へ]ボタンを押下して、OpenSSL 3.x.xのソースコードをダウンロードする。<br>
<br>
ダウンロードが完了した後、/<Qtのインストールディレクトリ>/Tools/OpenSSLv3/srcディレクトリに移動する。<br>
cd /<Qtのインストールディレクトリ>/Tools/OpenSSLv3/src
<br>
OpenSSL 3.x.xをビルドおよびインストールする。<br>
mkdir build && cd build
../Configure --prefix=<OpenSSL3のインストールディレクトリ>
make -j $(nproc)
make install
<br>
OpenSSL 3.x.xをQt Creatorで使用するため、環境変数を設定する。<br>
# Qt Creatorを起動する。
# Qt Creatorの画面左にある[プロジェクト]を選択する。
# [ビルドと実行]から、該当するキットの[実行]を選択する。
# [実行環境]セクションで、[環境]セクションから[この実行構成用の基本環境:]プルダウンから[ビルド時の環境変数]を選択して、以下に示す環境変数を追加する。
PATH=+/<OpenSSL3のインストールディレクトリ>/bin
LD_LIBRARY_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64
PKG_CONFIG_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64/pkgconfig
OPENSSL_CONF=/<OpenSSL3のインストールディレクトリ>/ssl/openssl.cnf
<br>
[[ファイル:Install Qt 2.png|フレームなし|中央]]
<br>
または、以下に示す方法でもOpenSSL 3.x.xを設定することができる。<br>
# [ビルドと実行]から、該当するキットの[ビルド]を選択する。
# [CMake]セクションの[Base environment the CMake configure step:]プルダウンから[System Environment]を選択して、以下に示す環境変数を追加する。
PATH=+/<OpenSSL3のインストールディレクトリ>/bin
LD_LIBRARY_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64
PKG_CONFIG_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64/pkgconfig
OPENSSL_CONF=/<OpenSSL3のインストールディレクトリ>/ssl/openssl.cnf
<br>
[[ファイル:Install_Qt_3.png|フレームなし|中央]]
<br><br>
== メニューバーの表示 / 非表示 ==
メニューバーの表示 / 非表示を切り替えて、画面上のスペースを節約することができる。<br>
<br>
[表示]メインメニュー - [メニューバーを表示]チェックボックスの選択を解除する。<br>
メニューバーを再度表示するには、[Ctrl] + [Alt] + [M]キーを同時押下する。<br>
<br><br>
== エラー関連 ==
==== libdbusに関する問題 ====
以下に示すようなlibdbusに関するコンパイルエラーが発生する場合がある。<br>
# ...略
/<GCCクロスコンパイラのパス>/bin/ld: /<PinePhoneのシステムルート>/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-message.o):
relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `dbus_message_unref' which may bind externally can not be used when making a shared object; recompile with -fPIC
# ...略
<br>
これは、システムルート内にあるlibdbusが動的共有オブジェクトでない場合に発生する可能性がある。<br>
これは通常、Mobian / Manjaro ARMの再インストールすることで解決できる。<br>
<br>
別の方法としては、libdbus-1-devパッケージを再インストールすることである。<br>
しかし、この問題が解決せず、D-Busが不要の場合は<code>-DFEATURE_dbus=OFF</code>オプションを付加することにより、D-Bus機能を無効にすることができる。<br>
<br>
さらに別の方法として、<code>set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed")</code>の行を、<br>
<code>set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -ldbus-1")</code>に変更する。<br>
この場合、/<PinePhoneのシステムルート>/usr/lib/aarch64-linux-gnu/libdbus-1.soへのリンクが有効であることを確認する。<br>
(同階層のディレクトリのlibdbus-1.so.X.XX.XXにリンクされているはずである)<br>
<br>
<u>※注意</u><br>
<u>Bluetoothモジュールを動作させるにはD-Bus機能が必要である。</u><br>
<br>
==== libstdc++のエラー ====
デバッグ時において、以下に示すようなエラーが出力される場合はある。<br>
/Path/to/<Project Name>/bin/<Binary Name>: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.XX' not found (required by /Path/to/Qt6 Library/lib/libQt6Qml.so.6)
<br>
クロスコンパイラのlibstdc++.so.6ファイルにおいて、ターゲットとなるOSのlibstdc++.so.6ファイルのバージョンと同等または古いものを使用する必要がある。<br>
例えば、Debian 12 (Mobian 12)はGLIBCXX_3.4.30であるため、GCC 12.2ツールチェーン以前のものを使用する。<br>
<br>
以下に示すコマンドを実行して、GLIBCXXのバージョンを確認することができる。<br>
# クロスコンパイラ
strings /<クロスコンパイラのインストールディレクトリ>/<アーキテクチャ名  例: aarch64-linux-gnu>/lib64/libstdc++.so.6 | grep -E '^GLIBCXX'
# Manjaro
strings /usr/lib/libstdc++.so.6 | grep -E '^GLIBCXX'
# Mobian
strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep -E '^GLIBCXX'
<br>
==== AT-SPI2の警告 ====
Qt6ライブラリを使用してプロジェクトをクロスコンパイルして実行する時、以下に示すようなAT-SPI2に関するエラーが出力される場合がある。<br>
qt.accessibility.atspi Error Not connected to D-Bus server
<br>
もし、アクセシビリティが不要な場合、Qt6ライブラリのコンパイルにおいて、<code>cmake</code>コマンドにアクセシビリティを無効にするオプションを付加する。<br>
-DQT_FEATURE_accessibility=OFF
-DQT_FEATURE_accessibility_atspi_bridge=OFF
<br>
==== GDBデバッグ実行時におけるキャッシュファイルの警告 ====
デバッグ実行時において、以下に示すような警告が非常に多く出力される場合がある。<br>
index cache: could not make cache directory: Permission denied
<br>
この警告は、デバッグ実行時のターゲットデバイスのディレクトリが存在しない場合、または、該当ディレクトリに書き込み権限が無い場合に出力される。<br>
<br>
この警告を抑制する場合は、以下に示す設定を行う。
# Qt Creatorの[編集]メニューバー - [Preferences...]を選択する。
# [設定]ダイアログが開くので、画面左ペインにある[デバッガ] - 画面右ペインにある[GDB]タブ - [追加の起動コマンド]に、以下に示す設定を入力する。
#: <code>set index-cache directory /tmp/GDB</code>
<br>
この設定により、/tmp/GDBディレクトリにデバッグ関連のログファイルが出力されるようになる。<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__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Qt]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Qt]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]