12,987
回編集
(→エラー関連) |
(→GDBの設定) |
||
836行目: | 836行目: | ||
<br> | <br> | ||
これにより、PinePhoneでQtライブラリが使用できる。<br> | これにより、PinePhoneでQtライブラリが使用できる。<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> | <br><br> | ||