|
|
684行目: |
684行目: |
| <br><br> | | <br><br> |
|
| |
|
| == エラー関連 == | | == ビルドエラー関連 == |
| ==== ビルドエラー : QtBase ==== | | ===== ビルドエラー : GCC 13を使用する場合 ===== |
| Qt 5のビルドにおいて、以下に示すようなエラーが表示される場合がある。<br>
| | GCC 13を使用してQt 6をビルドする場合、以下に示すようなエラーが出力される場合がある。<br> |
| qt-everywhere-src-5.15.x/qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.cpp:74:5: Error: »EGL_DISPMANX_WINDOW_T« was not declared in this scope
| | バグレポートURL : https://bugreports.qt.io/browse/QTBUG-111604?focusedCommentId=718489<br> |
| EGL_DISPMANX_WINDOW_T *eglWindow = new EGL_DISPMANX_WINDOW_T;
| | # エラー出力 1 |
| | error: 'uint32_t' is not a member of 'std'; did you mean 'wint_t'? |
| | |
| | # エラー出力 2 |
| | error: 'FeatureType' does not name a type; did you mean 'ToFeatureType'? |
| <br> | | <br> |
| この時、QtGuiモジュール内のBRCMテストを修正することにより、コンパイルすることができる。<br>
| | この時、以下に示すファイルを編集する。<br> |
| vi /<Qt 5のソースコードディレクトリ>/qtbase/src/gui/configure.json | | <syntaxhighlight lang="c++"> |
| <br> | | // qt-everywhere-src-6.x.x/qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cppファイル |
| <syntaxhighlight lang="json"> | | // 53行目 |
| # /<Qt 5のソースコードディレクトリ>/qtbase/src/gui/configure.jsonファイル | | // 変更前 |
| | #include <stdint.h> |
| | // 変更後 |
| | #include <cstdint> |
| | |
| | |
| | // qt-everywhere-src-6.x.x/qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cppファイル |
| | // 53行目 |
| | // 変更前 |
| | #include <stdint.h> |
| | // 変更後 |
| | #include <cstdint> |
| | | |
| # 編集前
| |
| "main": "vc_dispmanx_display_open(0);"
| |
| | | |
| # 編集後 | | // qt-everywhere-src-6.x.x/qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXTokenizer.cppファイル |
| "main": [ | | // 58行目 |
| "vc_dispmanx_display_open(0);",
| | // 変更前 |
| "EGL_DISPMANX_WINDOW_T *eglWindow = new EGL_DISPMANX_WINDOW_T;"
| | #include <stdint.h> |
| ] | | // 変更後 |
| | #include <cstdint> |
| </syntaxhighlight> | | </syntaxhighlight> |
| <br> | | <br> |
| ==== デバッグエラー : No route to host ==== | | ==== ビルドエラー関連 : X Keyboardに関するエラー ==== |
| デバッグ実行開始前に、以下に示すようなエラーが表示される場合がある。<br>
| | コンパイル時において、以下に示すようなエラーが出力される場合がある。<br> |
| tcp:<IPアドレス または ホスト名> | | error: XKB_KEY_dead_lowline was not declared in this scope; did you mean XKB_KEY_dead_belowring? |
| No route to host 〜 | | または |
| | error: 'XKB_KEY_dead_lowline' was not declared in this scope; did you mean 'XKB_KEY_dead_belowring'? |
| <br> | | <br> |
| これは、Raspberry Piのファイアーウォールが設定されているため、リモートデバッグ向けの指定のポートを開放する必要がある。<br>
| | この時、<code>cmake</code>コマンドの実行時において、<code>-DFEATURE_xkbcommon=OFF</code>オプションを付加する。<br> |
| Qt Creatorを使用している場合、デフォルトのポート番号は<code>10000-10100</code>である。<br>
| |
| <br> | | <br> |
| Raspberry Piにアクセスして、ファイアーウォールの指定のポートを開放する。<br>
| | ==== ビルドエラー関連 : Qt Toolのqhelpgeneratorに関するエラー ==== |
| sudo firewall-cmd --permanent --zone=public --add-port="10000-10100"/tcp
| | <code>cmake</code>コマンドの実行時において、以下に示すようなエラーが出力される場合がある。<br> |
| sudo firewall-cmd --reload
| | -- Configuring submodule 'qttools' |
| <br>
| | CMake Error at qttools/src/assistant/qhelpgenerator/CMakeLists.txt:66 (add_dependencies): |
| ==== デバッグエラー : プラットフォームの選択 ==== | | Cannot add target-level dependencies to non-existent target |
| デバッグ実行開始直後に、以下に示すようなエラーが表示される場合がある。<br>
| | "qhelpgenerator". |
| qt.qpa.plugin: Could not load the Qt platform plugin "eglfs" in "/home/raspi/InstallSoftware/Qt_5_15_13/plugins/platforms" even though it was found. | |
| This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
| |
| | | |
| Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, webgl, xcb. | | The add_dependencies works for top-level logical targets created by the |
| | add_executable, add_library, or add_custom_target commands. If you want to |
| | add file-level dependencies see the DEPENDS option of the add_custom_target |
| | and add_custom_command commands. |
| <br> | | <br> |
| これは、GUIソフトウェアの実行時において、デフォルトのプラットフォームを選択していないことに起因する。<br>
| | この時、以下に示すファイルを編集する。<br> |
| 実行時のコマンドライン引数において、<code>-platform <パラメータ></code>を指定することにより、実行するプラットフォームを選択することができる。<br>
| | vi /<Qt 6のソースコードがあるディレクトリ>/qttools/src/assistant/qhelpgenerator/CMakeLists.txt |
| * EGLFSで実行する場合
| |
| *: <code>-platform eglfs</code>
| |
| * XCBで実行する場合
| |
| *: <code>-platform xcb</code>
| |
| <br> | | <br> |
| ==== libEGL warning: DRI2: failed to authenticate - Raspberry Pi OS Bullseye以降 ==== | | <syntaxhighlight lang="cmake"> |
| 以下のコマンドを実行する。<br>
| | # /<Qt 6のソースコードがあるディレクトリ>/qttools/src/assistant/qhelpgenerator/CMakeLists.txtファイル 66行目 |
| sudo raspi-config | | |
| | # 編集前 |
| | add_dependencies(qhelpgenerator ${needed_plugins}) |
| | |
| | # 編集後 |
| | #add_dependencies(qhelpgenerator ${needed_plugins}) |
| | </syntaxhighlight> |
| <br> | | <br> |
| 次に、Raspberry Pi 3Bの場合は、[Advanced Options] - [A2 GL Driver] - [G2 GL (Full KMS)]を選択する。(KMSが有効になる)<br>
| | ==== ビルドエラー関連 : Qt Toolのqhelpgeneratorに関するエラー ==== |
| Raspberry Pi 4Bの場合は、[Advanced Options] - [A8 GL Driver] - [G2 GL (Fake KMS)]を選択する。(KMSが有効になる)<br>
| | ビルド時において、以下に示すようなエラーが出力される場合がある。<br> |
| | error: 'google::protobuf::FileDescriptor::Syntax google::protobuf::FileDescriptor::syntax() const' |
| <br> | | <br> |
| 最後に、[Finish]を選択して終了する。<br>
| | この時、以下に示す<code>cmake</code>コマンドのオプションを付加する。<br> |
| <br>
| | cmake -G Ninja \ |
| もし、このオプションが利用可能になる前に、いくつかのアップデートを促される時はアップデートする。<br>
| | |
| <br> | | # ...略 |
| | |
| ==== GLX/DRI2 is not supported/failed to authenticate : Raspbian OS Buster以前 ====
| |
| Qtプロジェクトをリモートデバッグする時、この警告が出力される場合がある。<br>
| |
| この警告は、他のソフトウェアが独自のMesaライブラリ(libEGLとlibGLESv2)を追加しているために表示される。<br>
| |
| <br>
| |
| まず、libEGLとlibGLESv2のパスを確認するため、以下のコマンドを実行する。<br>
| |
| (おそらく、/opt/vc/lib/libEGL.soと/opt/vc/lib/libGLESv2.soが表示される)<br>
| |
| sudo find / -iname "*egl*" | |
| sudo find / -iname "*gles*" | |
| <br>
| |
| 上記で表示されたファイルのシンボリックファイルを、以下のディレクトリに作成する。<br>
| |
| # Raspberry Pi 3B | |
| sudo ln -sf /opt/vc/lib/libbrcmEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so
| |
| sudo ln -sf /opt/vc/lib/libbrcmEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1
| |
| sudo ln -sf /opt/vc/lib/libbrcmGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so
| |
| sudo ln -sf /opt/vc/lib/libbrcmGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
| |
| | | |
| # Raspberry Pi 4B | | -DBUILD_qtgrpc |
| sudo ln -sf /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so
| |
| sudo ln -sf /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1
| |
| sudo ln -sf /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so
| |
| sudo ln -sf /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
| |
| <br>
| |
| <u>※注意</u><br>
| |
| <u>Debian等では、/usr/lib/x86_64-linux-gnu/mesa-eglディレクトリに存在する場合があるため、それに応じてコマンドを変更する必要がある。</u><br>
| |
| <br>
| |
| 最後に、ライブラリファイルを読み込むため、以下のコマンドを実行する。<br>
| |
| sudo ldconfig
| |
| <br>
| |
| 上記のシンボリックリンクの設定を元に戻す場合は、以下のように実行する。<br>
| |
| # Raspberry Pi 3B
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libEGL.so.1.1.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libEGL.so.1 /usr/lib/arm-linux-gnueabihf/libEGL.so
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 /usr/lib/arm-linux-gnueabihf/libGLESv2.so
| |
| | | |
| # Raspberry Pi 4B | | # ...略 |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libEGL.so.1.1.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libEGL.so.1 /usr/lib/arm-linux-gnueabihf/libEGL.so
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
| |
| sudo ln -sf /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 /usr/lib/arm-linux-gnueabihf/libGLESv2.so
| |
| <br>
| |
| ==== Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing. ====
| |
| Qtのソースコードにおいて、Configureスクリプトを実行する時、この注意が表示される場合がある。<br>
| |
| この時、Raspberry Piに対して、以下のライブラリをインストールする。<br>
| |
| sudo apt-get install at-spi2-core gir1.2-atspi-2.0 libatspi2.0-dev
| |
| <br><br> | | <br><br> |
|
| |
|