📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の9版が非表示) | |||
| 194行目: | 194行目: | ||
~/Program/Qt_Embedded/sysroot/usr ~/Program/Qt_Embedded/sysroot/usr/share | ~/Program/Qt_Embedded/sysroot/usr ~/Program/Qt_Embedded/sysroot/usr/share | ||
<br> | <br> | ||
<code>rsync</code> | <code>rsync</code>コマンドを使用して、Banana Piに存在するいくつかのディレクトリから、ファイルをダウンロードする。<br> | ||
rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | ||
<Banana Piのユーザ名>@<Banana Piのホスト名またはIPアドレス>:/lib \ | <Banana Piのユーザ名>@<Banana Piのホスト名またはIPアドレス>:/lib \ | ||
| 280行目: | 280行目: | ||
QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} | QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} | ||
# | # RISC-V64 ベクトル拡張1.0対応コンパイラフラグ | ||
COMPILER_FLAGS = -march=rv64gcv -mabi=lp64d | |||
COMPILER_FLAGS = -march= | |||
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 | ||
| 319行目: | 318行目: | ||
qmake.confファイルは、ビルド時の設定を定義するものである。<br> | qmake.confファイルは、ビルド時の設定を定義するものである。<br> | ||
cd /<Qtのソースコードが存在するディレクトリ>/qtbase/mkspecs/devices | cd /<Qtのソースコードが存在するディレクトリ>/qtbase/mkspecs/devices | ||
mkdir linux- | mkdir linux-bananapi-g++ && cd linux-bananapi-g++ | ||
vi qmake.conf | vi qmake.conf | ||
<br> | <br> | ||
| 365行目: | 364行目: | ||
#QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} | #QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} | ||
# | # RISC-V64 ベクトル拡張1.0対応コンパイラフラグ | ||
COMPILER_FLAGS = -march= | 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 | # RISC-V64 ベクトル拡張対応コンパイラフラグ | ||
set(QT_COMPILER_FLAGS "-march=rv64gcv -mabi=lp64d") | |||
set(QT_COMPILER_FLAGS "-march= | # リリースビルド用の最適化フラグ | ||
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ライブラリを、Banana Piにデプロイする。<br> | |||
~/Program/Qt_Embedded/ | ~/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 < | ~/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> | <u>Banana PiにアップロードしたQtライブラリの所有者がrootになっている場合があるため、</u><br> | ||
<u>以下のコマンドを実行して、所有者をローカルユーザに変更する必要がある。</u><br> | <u>以下のコマンドを実行して、所有者をローカルユーザに変更する必要がある。</u><br> | ||
sudo chown -R < | sudo chown -R <Banana Piのユーザ名>:<Banana Piのグループ名> ~/InstallSoftware/Qt_6_x_x | ||
<br> | <br> | ||
Banana PiのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br> | |||
<u>/etc/ld.so.conf. | <u>/etc/ld.so.conf.dディレクトリに配置する場合、ファイル名の先頭に"00"を付加すること。</u><br> | ||
# .profileファイルに設定する場合 | # .profileファイルに設定する場合 | ||
export LD_LIBRARY_PATH="/home/< | 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/< | 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> | ||
これにより、Banana PiでQtライブラリが使用できる。<br> | |||
<br><br> | <br><br> | ||
| 686行目: | 690行目: | ||
*: [デバイス]プルダウンから、[設定]画面左にある[デバイス]で作成したターゲットを選択する。 | *: [デバイス]プルダウンから、[設定]画面左にある[デバイス]で作成したターゲットを選択する。 | ||
*: [ビルドデバイス]プルダウンから、[ローカルPC]を選択する。 | *: [ビルドデバイス]プルダウンから、[ローカルPC]を選択する。 | ||
*: [Sysroot] | *: [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- | *: [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/< | *: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin ※PATHの設定が既に存在する場合は、追記する | ||
* Variable : LD_LIBRARY_PATH ( | * Variable : LD_LIBRARY_PATH (Banana Piの~/.profileファイルに環境変数LD_LIBRARY_PATHを設定している場合) | ||
*: Value : /home/< | *: 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/< | *: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml | ||
* Variable : QML2_IMPORT_PATH | * Variable : QML2_IMPORT_PATH | ||
*: Value : /home/< | *: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml | ||
* Variable : QT_PLUGIN_PATH | * Variable : QT_PLUGIN_PATH | ||
*: Value : /home/< | *: Value : /home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins | ||
* Variable : QT_QPA_PLATFORM_PLUGIN_PATH | * Variable : QT_QPA_PLATFORM_PLUGIN_PATH | ||
*: Value : /home/< | *: 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/< | <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/< | <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/< | <value type="QString">QML_IMPORT_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value> | ||
<value type="QString">QML2_IMPORT_PATH=/home/< | <value type="QString">QML2_IMPORT_PATH=/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value> | ||
<value type="QString">QT_PLUGIN_PATH=/home/< | <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/< | <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 | リモートターゲットをデバッグする時、GDBは、Linux PC側にダウンロードしているBanana 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 | システムルートディレクトリに対して、Linux PCに保存したBanana Pi向けのQtライブラリがあるディレクトリのシンボクリックリンクを作成する。 | ||
mkdir -p /< | mkdir -p /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware | ||
ln -s /<Qtライブラリのインストールディレクトリ> /< | ln -s /<Qtライブラリのインストールディレクトリ> /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware | ||
# シンボリックリンク名の変更 | # シンボリックリンク名の変更 | ||
mv /< | mv /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware/<Qtライブラリのインストールディレクトリ> \ | ||
/< | /<Banana Piのシステムルートディレクトリ>/home/<Banana Piのユーザ名>/InstallSoftware/Qt_6_x_x | ||
<br> | <br> | ||
Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br> | Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br> | ||
# Kit名に" | # Kit名に"BananaPi"という文字列が入っている場合のみ、Banana Piのシステムルートディレクトリを参照する | ||
# x86 / | # x86 / x64のKitを使用する場合は、Banana Piのシステムルートディレクトリを参照しない | ||
[ -n $(grep -i | [ -n $(grep -i BananaPi %{ActiveProject:Kit:Name}) ] && set sysroot /<Banana Piのシステムルートディレクトリ> | ||
# または | # または | ||
set sysroot /< | set sysroot /<Banana Piのシステムルートディレクトリ> | ||
<br> | <br> | ||
これにより、Banana PiでQtライブラリが使用できる。<br> | |||
<br><br> | <br><br> | ||
| 806行目: | 810行目: | ||
make install | make install | ||
<br> | <br> | ||
QtライブラリをBanana Piにデプロイする。<br> | |||
rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" /<Qtライブラリを配置するディレクトリ> \ | rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" /<Qtライブラリを配置するディレクトリ> \ | ||
< | <Banana Piのユーザ名>@<Banana Piのホスト名またはIPアドレス>:/home/<Banana Piのユーザ名>/<Qtライブラリをインストールするディレクトリ> | ||
<br><br> | <br><br> | ||
| 914行目: | 918行目: | ||
<br> | <br> | ||
システムルートのライブラリディレクトリ内のQt6関連の共有ライブラリファイルを別のディレクトリに移動させる。<br> | システムルートのライブラリディレクトリ内のQt6関連の共有ライブラリファイルを別のディレクトリに移動させる。<br> | ||
cd /< | 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> | ||
<br><br> | <br><br> | ||