📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
|||
| (同じ利用者による、間の14版が非表示) | |||
| 15行目: | 15行目: | ||
! 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= | | 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= | | 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= | | 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> | ||
| 27行目: | 27行目: | ||
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をインストールする場合 | ||
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 | |||
ffmpeg-4-libavresample-devel ffmpeg-4-libavutil-devel ffmpeg-4-libpostproc-devel ffmpeg-4-libswresample-devel | # QtWebEngineをインストールする場合 (デフォルトパッケージ) | ||
ffmpeg-4-libswscale-devel ffmpeg-4-private-devel | ffmpeg-4-libavcodec-devel ffmpeg-4-libavdevice-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavformat-devel \ | ||
ffmpeg-4-libavresample-devel ffmpeg-4-libavutil-devel ffmpeg-4-libpostproc-devel ffmpeg-4-libswresample-devel \ | |||
ffmpeg-6-libavcodec-devel ffmpeg-6-libavdevice-devel ffmpeg-6-libavfilter-devel ffmpeg-6-libavformat-devel | ffmpeg-4-libswscale-devel ffmpeg-4-private-devel | ||
ffmpeg-6-libavresample-devel ffmpeg-6-libavutil-devel ffmpeg-6-libpostproc-devel ffmpeg-6-libswresample-devel | |||
ffmpeg-6-libswscale-devel ffmpeg-6-private-devel | # QtWebEngineをインストールする場合 (Packmanパッケージ) | ||
ffmpeg-6-libavcodec-devel ffmpeg-6-libavdevice-devel ffmpeg-6-libavfilter-devel ffmpeg-6-libavformat-devel \ | |||
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> | ||
| 48行目: | 51行目: | ||
<u>クロスコンパイラのlibstdc++.so.6ファイルにおいて、Raspberry Pi OSのlibstdc++.so.6ファイルのバージョンと同等または古いものを使用する必要がある。</u><br> | <u>クロスコンパイラのlibstdc++.so.6ファイルにおいて、Raspberry Pi OSのlibstdc++.so.6ファイルのバージョンと同等または古いものを使用する必要がある。</u><br> | ||
<u>例えば、Raspberry Pi OS Bullseyeのlibstdc++.so.6ファイルはGLIBCXX_3.4.28までであるため、GCC 10ツールチェーン、または、それ以前のものを使用する。</u><br> | <u>例えば、Raspberry Pi OS Bullseyeのlibstdc++.so.6ファイルはGLIBCXX_3.4.28までであるため、GCC 10ツールチェーン、または、それ以前のものを使用する。</u><br> | ||
<u>また、Raspberry Pi OS Bookwormのlibstdc++.so.6ファイルはGLIBCXX_3.4.30までであるため、GCC 12ツールチェーン、または、それ以前のものを使用する。</u><br> | |||
<br> | <br> | ||
* GCCツールチェーン群 | * GCCツールチェーン群 | ||
| 58行目: | 62行目: | ||
# 32ビット向け | # 32ビット向け | ||
tar xf gcc-linaro-<バージョン>-x86_64_arm-linux-gnueabihf.tar.xz | tar xf gcc-linaro-<バージョン>-x86_64_arm-linux-gnueabihf.tar.xz | ||
# 64ビット向け | # 64ビット向け | ||
tar xf gcc-linaro-<バージョン>-x86_64_aarch64-linux-gnu.tar.xz | tar xf gcc-linaro-<バージョン>-x86_64_aarch64-linux-gnu.tar.xz | ||
| 73行目: | 77行目: | ||
|+ 表. Raspberry PiとLTO(Link Time Optimization)フラグの関係 | |+ 表. Raspberry PiとLTO(Link Time Optimization)フラグの関係 | ||
|- | |- | ||
! style="background-color:# | ! style="background-color:#66ccff;" | Raspberry Piの種類 | ||
! style="background-color:# | ! style="background-color:#66ccff;" | LTO(Link Time Optimization)フラグ | ||
|- | |- | ||
| Raspberry Pi Zero/W/WH<br>Raspberry Pi 1 Model A / B / A+ / B+ || -march=armv6 -mfloat-abi=hard -mfpu=vfp | | Raspberry Pi Zero/W/WH<br>Raspberry Pi 1 Model A / B / A+ / B+ || -march=armv6 -mfloat-abi=hard -mfpu=vfp | ||
| 106行目: | 110行目: | ||
<br> | <br> | ||
# /etc/apt/sources.listファイル | # /etc/apt/sources.listファイル | ||
# Bullseyeの場合 | # Bullseyeの場合 | ||
## 編集前 | ## 編集前 | ||
#deb-src http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi | #deb-src http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi | ||
## 編集後 | ## 編集後 | ||
deb-src http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi | deb-src http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi | ||
| 145行目: | 149行目: | ||
libraspberrypi-dev # Raspberry Pi 3B / 3B+の場合、かつ、Raspberry Pi OS 32ビットを使用する場合 | libraspberrypi-dev # Raspberry Pi 3B / 3B+の場合、かつ、Raspberry Pi OS 32ビットを使用する場合 | ||
libgles2-mesa-dev libgbm-dev # Raspberry Pi 4Bを使用する場合 | libgles2-mesa-dev libgbm-dev # Raspberry Pi 4Bを使用する場合 | ||
## XCBを使用する場合 | ## XCBを使用する場合 | ||
sudo apt install ccache libicu-dev icu-devtools libb2-dev libsctp1 libsctp-dev libzstd1 libzstd-dev libhidapi-dev \ | sudo apt install ccache libicu-dev icu-devtools libb2-dev libsctp1 libsctp-dev libzstd1 libzstd-dev libhidapi-dev \ | ||
| 175行目: | 179行目: | ||
libraspberrypi-dev # Raspberry Pi 3B / 3B+の場合、かつ、Raspberry Pi OS 32ビットを使用する場合 | libraspberrypi-dev # Raspberry Pi 3B / 3B+の場合、かつ、Raspberry Pi OS 32ビットを使用する場合 | ||
libgles2-mesa-dev libgbm-dev # Raspberry Pi 4Bを使用する場合 | libgles2-mesa-dev libgbm-dev # Raspberry Pi 4Bを使用する場合 | ||
## XCBを使用する場合 | ## XCBを使用する場合 | ||
sudo apt install ccache libicu-dev icu-devtools libb2-dev libsctp1 libsctp-dev libzstd1 libzstd-dev libhidapi-dev \ | sudo apt install ccache libicu-dev icu-devtools libb2-dev libsctp1 libsctp-dev libzstd1 libzstd-dev libhidapi-dev \ | ||
| 223行目: | 227行目: | ||
| OpenALオーディオ || libopenal-data libopenal1 libopenal-dev libsndio7.0 libsndio-dev || | | OpenALオーディオ || libopenal-data libopenal1 libopenal-dev libsndio7.0 libsndio-dev || | ||
|- | |- | ||
| データベース || unixodbc-dev (ODBC)<br>libsqlite3-dev (SQLite)<br>libpq-dev(PostgreSQL)<br>libmariadb-dev(MariaDB / MySQL) | | FFmpeg || | ||
| | * libavcodec-dev : オーディオ・ビデオのコーデック機能 | ||
* libavformat-dev : メディアコンテナフォーマットの処理 | |||
* libavutil-dev : FFmpegの共通ユーティリティ機能 | |||
* libswscale-dev : 画像のスケーリングと色空間変換の処理 | |||
* libswresample-dev : オーディオのリサンプリング機能 | |||
* libavdevice-dev : デバイスからのメディア入出力をサポート | |||
<br>VAAPIサポート (ハードウェアアクセラレーション) を有効にする場合:<br>libva-dev libdrm-dev | |||
|| | |||
|- | |||
| データベース || unixodbc-dev (ODBC)<br>libsqlite3-dev (SQLite)<br>libpq-dev(PostgreSQL)<br>libmariadb-dev(MariaDB / MySQL) || | |||
|- | |- | ||
| プリンタ || libcups2-dev || | | プリンタ || libcups2-dev || | ||
| 232行目: | 245行目: | ||
| Qt GamePad || libsdl2-dev || | | Qt GamePad || libsdl2-dev || | ||
|- | |- | ||
| Wayland || libwayland-dev libwayland | | Wayland || libwayland-dev libwayland-dev waylandpp-dev libwayland-egl-backend-dev || | ||
|- | |- | ||
| X11 || libx11-dev libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev<br>libfreetype6-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev<br>libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev<br>libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev<br> libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev<br><br>もし、xcbに関連するパッケージを全てインストールする場合は、<code>sudo apt install "libxcb-*"</code>を実行する。 || | | X11 || libx11-dev libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev<br>libfreetype6-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev<br>libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev<br>libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev<br> libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev<br><br>もし、xcbに関連するパッケージを全てインストールする場合は、<code>sudo apt install "libxcb-*"</code>を実行する。 || | ||
| 285行目: | 298行目: | ||
<Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/lib \ | <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/lib \ | ||
<Raspberry Piのシステムルートディレクトリ> | <Raspberry Piのシステムルートディレクトリ> | ||
rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | ||
<Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/include \ | <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/include \ | ||
/<Raspberry Piのシステムルートディレクトリ>/usr | /<Raspberry Piのシステムルートディレクトリ>/usr | ||
rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | ||
<Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/lib \ | <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/lib \ | ||
/<Raspberry Piのシステムルートディレクトリ>/usr | /<Raspberry Piのシステムルートディレクトリ>/usr | ||
rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ | ||
<Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/share/pkgconfig \ | <Raspberry Piのユーザ名>@<Raspberry Piのホスト名またはIPアドレス>:/usr/share/pkgconfig \ | ||
| 339行目: | 352行目: | ||
<syntaxhighlight lang="make"> | <syntaxhighlight lang="make"> | ||
# qmake.confファイル | # qmake.confファイル | ||
include(../common/linux_device_pre.conf) | include(../common/linux_device_pre.conf) | ||
SYSROOT_INC = $$[QT_SYSROOT]/usr/include | SYSROOT_INC = $$[QT_SYSROOT]/usr/include | ||
SYSROOT_LIB = $$[QT_SYSROOT]/usr/lib | SYSROOT_LIB = $$[QT_SYSROOT]/usr/lib | ||
# Extra stuff (OpenGL, DirectFB, ...) | # Extra stuff (OpenGL, DirectFB, ...) | ||
QMAKE_INCDIR_EGL = $$[SYSROOT_INC] \ | QMAKE_INCDIR_EGL = $$[SYSROOT_INC] \ | ||
| 362行目: | 375行目: | ||
QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} | QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} | ||
QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} | QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} | ||
QMAKE_LIBS_EGL = -lEGL | QMAKE_LIBS_EGL = -lEGL | ||
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} | QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} | ||
QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} | QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} | ||
# Raspberry Pi 3B / 3B+の場合 | # Raspberry Pi 3B / 3B+の場合 | ||
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 | QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 | ||
# Raspberry Pi 4B 32ビットOSを使用する場合 | # Raspberry Pi 4B 32ビットOSを使用する場合 | ||
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8 | QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8 | ||
# Raspberry Pi 4B 64ビットOSを使用する場合 | # Raspberry Pi 4B 64ビットOSを使用する場合 | ||
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 | QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 | ||
QMAKE_CFLAGS = $${COMPILER_FLAGS} | QMAKE_CFLAGS = $${COMPILER_FLAGS} | ||
QMAKE_CXXFLAGS = $${COMPILER_FLAGS} | QMAKE_CXXFLAGS = $${COMPILER_FLAGS} | ||
QMAKE_CXXFLAGS_RELEASE += -O3 | QMAKE_CXXFLAGS_RELEASE += -O3 | ||
QMAKE_LIBS += -lrt -lpthread -ldl | QMAKE_LIBS += -lrt -lpthread -ldl | ||
# Raspberry Pi OS 32ビットの場合 | # Raspberry Pi OS 32ビットの場合 | ||
# Raspberry Pi OS 64ビットの場合はコメントアウトする | # Raspberry Pi OS 64ビットの場合はコメントアウトする | ||
DISTRO_OPTS += hard-float | DISTRO_OPTS += hard-float | ||
# Raspberry Pi OS 64ビットの場合はコメントを解除する | # Raspberry Pi OS 64ビットの場合はコメントを解除する | ||
#DISTRO_OPTS += aarch64 | #DISTRO_OPTS += aarch64 | ||
# for Raspberry Pi OS | # for Raspberry Pi OS | ||
DISTRO_OPTS += deb-multi-arch | DISTRO_OPTS += deb-multi-arch | ||
# Preferred eglfs backend | # Preferred eglfs backend | ||
## Raspberry Pi 3B / 3B+の場合 | ## Raspberry Pi 3B / 3B+の場合 | ||
EGLFS_DEVICE_INTEGRATION = eglfs_brcm | EGLFS_DEVICE_INTEGRATION = eglfs_brcm | ||
## Raspberry Pi 4Bの場合 | ## Raspberry Pi 4Bの場合 | ||
EGLFS_DEVICE_INTEGRATION = eglfs_kms | EGLFS_DEVICE_INTEGRATION = eglfs_kms | ||
include(../common/linux_arm_device_post.conf) | include(../common/linux_arm_device_post.conf) | ||
load(qt_config) | load(qt_config) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 409行目: | 422行目: | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
# qplatformdefs.hファイル | # qplatformdefs.hファイル | ||
#include "../../linux-g++/qplatformdefs.h" | #include "../../linux-g++/qplatformdefs.h" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 422行目: | 435行目: | ||
<syntaxhighlight lang="make"> | <syntaxhighlight lang="make"> | ||
# qmake.confファイル | # qmake.confファイル | ||
include(../common/linux_device_pre.conf) | include(../common/linux_device_pre.conf) | ||
SYSROOT_INC = $$[QT_SYSROOT]/usr/include | SYSROOT_INC = $$[QT_SYSROOT]/usr/include | ||
SYSROOT_LIB = $$[QT_SYSROOT]/usr/lib | SYSROOT_LIB = $$[QT_SYSROOT]/usr/lib | ||
# Extra stuff (OpenGL, DirectFB, ...) | # Extra stuff (OpenGL, DirectFB, ...) | ||
QMAKE_INCDIR_EGL = $$[SYSROOT_INC] \ | QMAKE_INCDIR_EGL = $$[SYSROOT_INC] \ | ||
| 445行目: | 458行目: | ||
QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} | QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} | ||
QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} | QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} | ||
QMAKE_LIBS_EGL = -lEGL | QMAKE_LIBS_EGL = -lEGL | ||
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} | QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} | ||
QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} | QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} | ||
# Raspberry Pi 3B / 3B+の場合 | # Raspberry Pi 3B / 3B+の場合 | ||
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 | QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 | ||
# Raspberry Pi 4B 32ビットOSを使用する場合 | # Raspberry Pi 4B 32ビットOSを使用する場合 | ||
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8 | QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8 | ||
# Raspberry Pi 4B 64ビットOSを使用する場合 | # Raspberry Pi 4B 64ビットOSを使用する場合 | ||
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 | QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 | ||
QMAKE_CFLAGS = $${COMPILER_FLAGS} | QMAKE_CFLAGS = $${COMPILER_FLAGS} | ||
QMAKE_CXXFLAGS = $${COMPILER_FLAGS} | QMAKE_CXXFLAGS = $${COMPILER_FLAGS} | ||
QMAKE_CXXFLAGS_RELEASE += -O3 | QMAKE_CXXFLAGS_RELEASE += -O3 | ||
QMAKE_LIBS += -lrt -lpthread -ldl | QMAKE_LIBS += -lrt -lpthread -ldl | ||
# Raspberry Pi OS 32ビットの場合 | # Raspberry Pi OS 32ビットの場合 | ||
# Raspberry Pi OS 64ビットの場合はコメントアウトする | # Raspberry Pi OS 64ビットの場合はコメントアウトする | ||
DISTRO_OPTS += hard-float | DISTRO_OPTS += hard-float | ||
# Raspberry Pi OS 64ビットの場合はコメントを解除する | # Raspberry Pi OS 64ビットの場合はコメントを解除する | ||
#DISTRO_OPTS += aarch64 | #DISTRO_OPTS += aarch64 | ||
# for Raspberry Pi OS | # for Raspberry Pi OS | ||
DISTRO_OPTS += deb-multi-arch | DISTRO_OPTS += deb-multi-arch | ||
# Preferred eglfs backend | # Preferred eglfs backend | ||
EGLFS_DEVICE_INTEGRATION = eglfs_kms | EGLFS_DEVICE_INTEGRATION = eglfs_kms | ||
include(../common/linux_arm_device_post.conf) | include(../common/linux_arm_device_post.conf) | ||
load(qt_config) | load(qt_config) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 488行目: | 501行目: | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
# qplatformdefs.hファイル | # qplatformdefs.hファイル | ||
#include "../../linux-g++/qplatformdefs.h" | #include "../../linux-g++/qplatformdefs.h" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 497行目: | 510行目: | ||
<syntaxhighlight lang="cmake"> | <syntaxhighlight lang="cmake"> | ||
# Raspberry Pi OS Bullseye / Bookworm 32ビットの場合 | # Raspberry Pi OS Bullseye / Bookworm 32ビットの場合 | ||
cmake_minimum_required(VERSION 3.18) | cmake_minimum_required(VERSION 3.18) | ||
include_guard(GLOBAL) | include_guard(GLOBAL) | ||
set(CMAKE_SYSTEM_NAME Linux) | set(CMAKE_SYSTEM_NAME Linux) | ||
set(CMAKE_SYSTEM_PROCESSOR arm) | set(CMAKE_SYSTEM_PROCESSOR arm) | ||
set(TARGET_SYSROOT "<Raspberry Pi Bullseye / Bookworm 32ビットのシステムルートディレクトリのパス>") | set(TARGET_SYSROOT "<Raspberry Pi Bullseye / Bookworm 32ビットのシステムルートディレクトリのパス>") | ||
set(CMAKE_SYSROOT ${TARGET_SYSROOT}) | set(CMAKE_SYSROOT ${TARGET_SYSROOT}) | ||
set(ENV{PKG_CONFIG_PATH} ENV{PKG_CONFIG_PATH}:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig) | set(ENV{PKG_CONFIG_PATH} ENV{PKG_CONFIG_PATH}:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig) | ||
set(ENV{PKG_CONFIG_LIBDIR} /usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig) | set(ENV{PKG_CONFIG_LIBDIR} /usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig) | ||
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT}) | set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT}) | ||
set(CMAKE_C_COMPILER "/<ARM向けクロスコンパイラのインストールパス>/bin/arm-linux-gnueabihf-gcc") | set(CMAKE_C_COMPILER "/<ARM向けクロスコンパイラのインストールパス>/bin/arm-linux-gnueabihf-gcc") | ||
set(CMAKE_CXX_COMPILER "/<ARM向けクロスコンパイラのインストールパス>/bin/arm-linux-gnueabihf-g++") | set(CMAKE_CXX_COMPILER "/<ARM向けクロスコンパイラのインストールパス>/bin/arm-linux-gnueabihf-g++") | ||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/include -I${TARGET_SYSROOT}/usr/include/arm-linux-gnueabihf") | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/include -I${TARGET_SYSROOT}/usr/include/arm-linux-gnueabihf") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") | set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") | ||
| 519行目: | 532行目: | ||
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf") | set(CMAKE_MODULE_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf") | ||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf") | set(CMAKE_SHARED_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf") | ||
# Raspberry Pi 3B / 3B+ の場合 | # Raspberry Pi 3B / 3B+ の場合 | ||
set(SOC_FLAG "-march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8") | set(SOC_FLAG "-march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8") | ||
| 526行目: | 539行目: | ||
# Raspberry Pi 5 の場合 | # Raspberry Pi 5 の場合 | ||
set(SOC_FLAG "-march=armv8-a -mtune=cortex-a76") | set(SOC_FLAG "-march=armv8-a -mtune=cortex-a76") | ||
set(QT_COMPILER_FLAGS ${SOC_FLAG}) | set(QT_COMPILER_FLAGS ${SOC_FLAG}) | ||
set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe") | set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe") | ||
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") | ||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | ||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | ||
| 537行目: | 550行目: | ||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | ||
set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT}) | set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT}) | ||
set(XCB_PATH_VARIABLE ${TARGET_SYSROOT}) | set(XCB_PATH_VARIABLE ${TARGET_SYSROOT}) | ||
set(GL_INC_DIR ${TARGET_SYSROOT}/usr/include) | set(GL_INC_DIR ${TARGET_SYSROOT}/usr/include) | ||
set(GL_LIB_DIR ${TARGET_SYSROOT}:${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf/:${TARGET_SYSROOT}/usr:${TARGET_SYSROOT}/usr/lib) | set(GL_LIB_DIR ${TARGET_SYSROOT}:${TARGET_SYSROOT}/usr/lib/arm-linux-gnueabihf/:${TARGET_SYSROOT}/usr:${TARGET_SYSROOT}/usr/lib) | ||
set(EGL_INCLUDE_DIR ${GL_INC_DIR}) | set(EGL_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(EGL_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libEGL.so) | set(EGL_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libEGL.so) | ||
set(OPENGL_INCLUDE_DIR ${GL_INC_DIR}) | set(OPENGL_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(OPENGL_opengl_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libOpenGL.so) | set(OPENGL_opengl_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libOpenGL.so) | ||
set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(GLIB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libGLESv2.so) | set(GLIB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libGLESv2.so) | ||
set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(GLESv2_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libGLESv2.so) | set(GLESv2_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libGLESv2.so) | ||
set(gbm_INCLUDE_DIR ${GL_INC_DIR}) | set(gbm_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(gbm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libgbm.so) | set(gbm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libgbm.so) | ||
set(Libdrm_INCLUDE_DIR ${GL_INC_DIR}) | set(Libdrm_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(Libdrm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libdrm.so) | set(Libdrm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libdrm.so) | ||
set(XCB_XCB_INCLUDE_DIR ${GL_INC_DIR}) | set(XCB_XCB_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(XCB_XCB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libxcb.so) | set(XCB_XCB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/arm-linux-gnueabihf/libxcb.so) | ||
| 568行目: | 581行目: | ||
<syntaxhighlight lang="cmake"> | <syntaxhighlight lang="cmake"> | ||
# Raspberry Pi OS Bullseye / Bookworm 64ビットの場合 | # Raspberry Pi OS Bullseye / Bookworm 64ビットの場合 | ||
cmake_minimum_required(VERSION 3.18) | cmake_minimum_required(VERSION 3.18) | ||
include_guard(GLOBAL) | include_guard(GLOBAL) | ||
set(CMAKE_SYSTEM_NAME Linux) | set(CMAKE_SYSTEM_NAME Linux) | ||
set(CMAKE_SYSTEM_PROCESSOR arm) | set(CMAKE_SYSTEM_PROCESSOR arm) | ||
set(TARGET_SYSROOT "<Raspberry Pi Bullseye / Bookworm 64ビットのシステムルートディレクトリのパス>") | set(TARGET_SYSROOT "<Raspberry Pi Bullseye / Bookworm 64ビットのシステムルートディレクトリのパス>") | ||
set(CMAKE_SYSROOT ${TARGET_SYSROOT}) | set(CMAKE_SYSROOT ${TARGET_SYSROOT}) | ||
set(ENV{PKG_CONFIG_PATH} $PKG_CONFIG_PATH:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig) | set(ENV{PKG_CONFIG_PATH} $PKG_CONFIG_PATH:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig) | ||
set(ENV{PKG_CONFIG_LIBDIR} /usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig/:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig) | set(ENV{PKG_CONFIG_LIBDIR} /usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig/:${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig) | ||
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT}) | set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT}) | ||
set(CMAKE_C_COMPILER /<ARM向けクロスコンパイラのインストールパス>/bin/aarch64-linux-gnu-gcc) | set(CMAKE_C_COMPILER /<ARM向けクロスコンパイラのインストールパス>/bin/aarch64-linux-gnu-gcc) | ||
set(CMAKE_CXX_COMPILER /<ARM向けクロスコンパイラのインストールパス>/bin/aarch64-linux-gnu-g++) | set(CMAKE_CXX_COMPILER /<ARM向けクロスコンパイラのインストールパス>/bin/aarch64-linux-gnu-g++) | ||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/include -I${TARGET_SYSROOT}/usr/include/aarch64-linux-gnu") | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/include -I${TARGET_SYSROOT}/usr/include/aarch64-linux-gnu") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") | set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") | ||
| 590行目: | 603行目: | ||
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu") | set(CMAKE_MODULE_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu") | ||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu") | set(CMAKE_SHARED_LINKER_FLAGS_INIT "-Wl,-rpath-link,${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu") | ||
# Raspberry Pi 3B / 3B+ の場合 | # Raspberry Pi 3B / 3B+ の場合 | ||
set(SOC_FLAG "-march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8") | set(SOC_FLAG "-march=armv8-a -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8") | ||
| 597行目: | 610行目: | ||
# Raspberry Pi 5 の場合 | # Raspberry Pi 5 の場合 | ||
set(SOC_FLAG "-march=armv8-a -mtune=cortex-a76") | set(SOC_FLAG "-march=armv8-a -mtune=cortex-a76") | ||
set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe") | set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe") | ||
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") | ||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | ||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | ||
| 607行目: | 620行目: | ||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | ||
set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT}) | set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT}) | ||
set(XCB_PATH_VARIABLE ${TARGET_SYSROOT}) | set(XCB_PATH_VARIABLE ${TARGET_SYSROOT}) | ||
set(GL_INC_DIR ${TARGET_SYSROOT}/usr/include) | set(GL_INC_DIR ${TARGET_SYSROOT}/usr/include) | ||
set(GL_LIB_DIR ${TARGET_SYSROOT}:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/:${TARGET_SYSROOT}/usr:${TARGET_SYSROOT}/usr/lib) | set(GL_LIB_DIR ${TARGET_SYSROOT}:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/:${TARGET_SYSROOT}/usr:${TARGET_SYSROOT}/usr/lib) | ||
set(EGL_INCLUDE_DIR ${GL_INC_DIR}) | set(EGL_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(EGL_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libEGL.so) | set(EGL_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libEGL.so) | ||
set(OPENGL_INCLUDE_DIR ${GL_INC_DIR}) | set(OPENGL_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(OPENGL_opengl_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libOpenGL.so) | set(OPENGL_opengl_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libOpenGL.so) | ||
set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(GLIB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv2.so) | set(GLIB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv2.so) | ||
set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(GLESv2_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv2.so) | set(GLESv2_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv2.so) | ||
set(gbm_INCLUDE_DIR ${GL_INC_DIR}) | set(gbm_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(gbm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libgbm.so) | set(gbm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libgbm.so) | ||
set(Libdrm_INCLUDE_DIR ${GL_INC_DIR}) | set(Libdrm_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(Libdrm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libdrm.so) | set(Libdrm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libdrm.so) | ||
set(XCB_XCB_INCLUDE_DIR ${GL_INC_DIR}) | set(XCB_XCB_INCLUDE_DIR ${GL_INC_DIR}) | ||
set(XCB_XCB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libxcb.so) | set(XCB_XCB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libxcb.so) | ||
| 640行目: | 653行目: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
# EGLFSの場合 | # EGLFSの場合 | ||
# ビルドディレクトリを作成 | # ビルドディレクトリを作成 | ||
mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build | mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build | ||
export CROSS_PI_PATH=/<GCC ARMツールチェインのインストールディレクトリ> | export CROSS_PI_PATH=/<GCC ARMツールチェインのインストールディレクトリ> | ||
# Raspberry Pi OS 32ビットの場合 | # Raspberry Pi OS 32ビットの場合 | ||
export CROSS_COMPILE=$CROSS_PI_PATH/bin/arm-linux-gnueabihf- | export CROSS_COMPILE=$CROSS_PI_PATH/bin/arm-linux-gnueabihf- | ||
# Raspberry Pi OS 64ビットの場合 | # Raspberry Pi OS 64ビットの場合 | ||
export CROSS_COMPILE=$CROSS_PI_PATH/bin/aarch64-linux-gnu- | export CROSS_COMPILE=$CROSS_PI_PATH/bin/aarch64-linux-gnu- | ||
# システムルードディレクトリの指定 | # システムルードディレクトリの指定 | ||
export SYSTEMROOT=<Raspberry Pi OSのシステムルートディレクトリ> | export SYSTEMROOT=<Raspberry Pi OSのシステムルートディレクトリ> | ||
export PKG_CONFIG_SYSROOT_DIR=$SYSTEMROOT | export PKG_CONFIG_SYSROOT_DIR=$SYSTEMROOT | ||
export PKG_CONFIG_PATH=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig | export PKG_CONFIG_PATH=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig | ||
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/share/pkgconfig | export PKG_CONFIG_LIBDIR=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/share/pkgconfig | ||
cmake -G Ninja \ | cmake -G Ninja \ | ||
<Qt 6のソースコードがあるディレクトリ> \ | <Qt 6のソースコードがあるディレクトリ> \ | ||
| 693行目: | 706行目: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
# XCBの場合 | # XCBの場合 | ||
# ビルドディレクトリを作成 | # ビルドディレクトリを作成 | ||
mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build | mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build | ||
export CROSS_PI_PATH=/<GCC ARMツールチェインのインストールディレクトリ> | export CROSS_PI_PATH=/<GCC ARMツールチェインのインストールディレクトリ> | ||
# Raspberry Pi OS 32ビットの場合 | # Raspberry Pi OS 32ビットの場合 | ||
export CROSS_COMPILE=$CROSS_PI_PATH/bin/arm-linux-gnueabihf- | export CROSS_COMPILE=$CROSS_PI_PATH/bin/arm-linux-gnueabihf- | ||
# Raspberry Pi OS 64ビットの場合 | # Raspberry Pi OS 64ビットの場合 | ||
export CROSS_COMPILE=$CROSS_PI_PATH/bin/aarch64-linux-gnu- | export CROSS_COMPILE=$CROSS_PI_PATH/bin/aarch64-linux-gnu- | ||
# システムルードディレクトリの指定 | # システムルードディレクトリの指定 | ||
export SYSTEMROOT=<Raspberry Pi OSのシステムルートディレクトリ> | export SYSTEMROOT=<Raspberry Pi OSのシステムルートディレクトリ> | ||
export PKG_CONFIG_SYSROOT_DIR=$SYSTEMROOT | export PKG_CONFIG_SYSROOT_DIR=$SYSTEMROOT | ||
export PKG_CONFIG_PATH=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig | export PKG_CONFIG_PATH=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig | ||
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/share/pkgconfig | export PKG_CONFIG_LIBDIR=$PKG_CONFIG_SYSROOT_DIR/usr/lib/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/lib/arm-linux-gnueabihf/pkgconfig:$PKG_CONFIG_SYSROOT_DIR/usr/share/pkgconfig | ||
cmake -G Ninja \ | cmake -G Ninja \ | ||
<Qt 6のソースコードがあるディレクトリ> \ | <Qt 6のソースコードがあるディレクトリ> \ | ||
| 855行目: | 868行目: | ||
または | または | ||
make -j 4 NINJAJOBS=-j4 | make -j 4 NINJAJOBS=-j4 | ||
make install | make install | ||
<br> | <br> | ||
| 892行目: | 905行目: | ||
# .profileファイルに設定する場合 | # .profileファイルに設定する場合 | ||
export LD_LIBRARY_PATH="/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:$LD_LIBRARY_PATH" | export LD_LIBRARY_PATH="/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:$LD_LIBRARY_PATH" | ||
# /etc/ld.so.conf.dディレクトリに配置する場合 | # /etc/ld.so.conf.dディレクトリに配置する場合 | ||
echo /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_6_x_x.conf | echo /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_6_x_x.conf | ||
| 966行目: | 979行目: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
# .pro.userファイル | # .pro.userファイル | ||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> | <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> | ||
<!-- ...略 --> | <!-- ...略 --> | ||
| 1,008行目: | 1,021行目: | ||
mkdir -p /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware | mkdir -p /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware | ||
ln -s /<Qtライブラリのインストールディレクトリ> /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware | ln -s /<Qtライブラリのインストールディレクトリ> /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware | ||
# シンボリックリンク名の変更 | # シンボリックリンク名の変更 | ||
mv /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware/<Qtライブラリのインストールディレクトリ> \ | mv /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware/<Qtライブラリのインストールディレクトリ> \ | ||
| 1,017行目: | 1,030行目: | ||
# x86 / x64のKitを使用する場合は、Raspberry Piのシステムルートディレクトリを参照しない | # x86 / x64のKitを使用する場合は、Raspberry Piのシステムルートディレクトリを参照しない | ||
[ -n $(grep -i RaspberryPi %{ActiveProject:Kit:Name}) ] && set sysroot /<Raspberry Piのシステムルートディレクトリ> | [ -n $(grep -i RaspberryPi %{ActiveProject:Kit:Name}) ] && set sysroot /<Raspberry Piのシステムルートディレクトリ> | ||
# または | # または | ||
set sysroot /<Raspberry Piのシステムルートディレクトリ> | set sysroot /<Raspberry Piのシステムルートディレクトリ> | ||
<br> | <br> | ||
| 1,031行目: | 1,044行目: | ||
# または | # または | ||
git clone https://code.qt.io/cgit/qt/<Qtライブラリ名>.git -b <Qtのバージョン> | git clone https://code.qt.io/cgit/qt/<Qtライブラリ名>.git -b <Qtのバージョン> | ||
cd <Qtライブラリ名> | cd <Qtライブラリ名> | ||
~/Program/Qt_Embedded/Qt5/bin/qmake | ~/Program/Qt_Embedded/Qt5/bin/qmake | ||
make -j $(nproc) | make -j $(nproc) | ||
| 1,049行目: | 1,062行目: | ||
# エラー出力 1 | # エラー出力 1 | ||
error: 'uint32_t' is not a member of 'std'; did you mean 'wint_t'? | error: 'uint32_t' is not a member of 'std'; did you mean 'wint_t'? | ||
# エラー出力 2 | # エラー出力 2 | ||
error: 'FeatureType' does not name a type; did you mean 'ToFeatureType'? | error: 'FeatureType' does not name a type; did you mean 'ToFeatureType'? | ||
| 1,061行目: | 1,074行目: | ||
// 変更後 | // 変更後 | ||
#include <cstdint> | #include <cstdint> | ||
// qt-everywhere-src-6.x.x/qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cppファイル | // qt-everywhere-src-6.x.x/qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cppファイル | ||
// 53行目 | // 53行目 | ||
| 1,069行目: | 1,082行目: | ||
// 変更後 | // 変更後 | ||
#include <cstdint> | #include <cstdint> | ||
// qt-everywhere-src-6.x.x/qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXTokenizer.cppファイル | // qt-everywhere-src-6.x.x/qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXTokenizer.cppファイル | ||
// 58行目 | // 58行目 | ||
| 1,093行目: | 1,106行目: | ||
Cannot add target-level dependencies to non-existent target | Cannot add target-level dependencies to non-existent target | ||
"qhelpgenerator". | "qhelpgenerator". | ||
The add_dependencies works for top-level logical targets created by the | 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_executable, add_library, or add_custom_target commands. If you want to | ||
| 1,100行目: | 1,113行目: | ||
<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に関するエラー ==== | ||
ビルド時において、以下に示すようなエラーが出力される場合がある。<br> | ビルド時において、以下に示すようなエラーが出力される場合がある。<br> | ||
| 1,118行目: | 1,143行目: | ||
この時、以下に示す<code>cmake</code>コマンドのオプションを付加する。<br> | この時、以下に示す<code>cmake</code>コマンドのオプションを付加する。<br> | ||
cmake -G Ninja \ | cmake -G Ninja \ | ||
# ...略 | # ...略 | ||
-DBUILD_qtgrpc | -DBUILD_qtgrpc | ||
# ...略 | # ...略 | ||
<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> | |||
==== ビルドエラー : Waylandに関するエラー ==== | ==== ビルドエラー : Waylandに関するエラー ==== | ||
Qt 6をビルドする場合、以下に示すようなエラーが出力される場合がある。<br> | Qt 6をビルドする場合、以下に示すようなエラーが出力される場合がある。<br> | ||
wayland-fullscreen-shell-unstable-v1-client-protocol.h:XXX:Y: error: 'wl_proxy_marshal_flags' was not declared in this scope; did you mean 'wl_proxy_marshal_array'? | wayland-fullscreen-shell-unstable-v1-client-protocol.h:XXX:Y: error: 'wl_proxy_marshal_flags' was not declared in this scope; did you mean 'wl_proxy_marshal_array'? | ||
wayland-fullscreen-shell-unstable-v1-client-protocol.h:XXX:Y: error wl_proxy_marshal_flags was not declared in this scope; did you mean wl_proxy_marshal_array? | wayland-fullscreen-shell-unstable-v1-client-protocol.h:XXX:Y: error wl_proxy_marshal_flags was not declared in this scope; did you mean wl_proxy_marshal_array? | ||
<br> | <br> | ||
| 1,151行目: | 1,192行目: | ||
<br> | <br> | ||
この時、Qt Creator 14は使用せずに、Qt Creator 13以前を使用する必要がある。<br> | この時、Qt Creator 14は使用せずに、Qt Creator 13以前を使用する必要がある。<br> | ||
<br> | |||
==== ロケールに関する警告 ==== | |||
デバッグ開始時において、以下に示す警告が表示される場合がある。<br> | |||
Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. | |||
Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. | |||
If this causes problems, reconfigure your locale. See the locale(1) manual | |||
for more information. | |||
<br> | |||
この警告は、Raspberry Pi側のロケール設定がUTF-8ではないため、Qtが自動的にロケールを切り替えていることを示している。<br> | |||
<br> | |||
Qt Creatorのデバッグ設定において、環境変数を明示的に設定する。<br> | |||
# [プロジェクト]を開いて、Qt Creatorのメイン画面左ペインにある[プロジェクト] - 該当するキット内にある[実行]を選択する。 | |||
# 次に、[環境]セクションの[詳細]ボタンを押下して、以下に示す設定を追加する。 | |||
#: <syntaxhighlight lang="text"> | |||
LANG=C.UTF-8 | |||
LC_ALL=C.UTF-8 | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
| 1,308行目: | 1,366行目: | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<!-- .idea/runConfigurations/<プロジェクト名>.xml --> | <!-- .idea/runConfigurations/<プロジェクト名>.xml --> | ||
<component name="ProjectRunConfigurationManager"> | <component name="ProjectRunConfigurationManager"> | ||
<configuration ...略> | <configuration ...略> | ||
| 1,323行目: | 1,381行目: | ||
<env name="PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" /> | <env name="PATH" value="/<Qt6ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" /> | ||
</envs> | </envs> | ||
<!-- ...略 --> | <!-- ...略 --> | ||
</configuration> | </configuration> | ||
</component> | </component> | ||
| 1,343行目: | 1,401行目: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
# ~/.gdbinitファイル または ~/.lldbinitファイル | # ~/.gdbinitファイル または ~/.lldbinitファイル | ||
set auto-load safe-path / | set auto-load safe-path / | ||
# または | # または | ||
set auto-load local-gdbinit on | set auto-load local-gdbinit on | ||
add-auto-load-safe-path / | add-auto-load-safe-path / | ||
| 1,358行目: | 1,416行目: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
# /<プロジェクトディレクトリ>/.gdbinitファイル または /<プロジェクトディレクトリ>/.lldbinitファイル | # /<プロジェクトディレクトリ>/.gdbinitファイル または /<プロジェクトディレクトリ>/.lldbinitファイル | ||
set sysroot <Raspberry Piのシステムルートディレクトリ> | set sysroot <Raspberry Piのシステムルートディレクトリ> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 1,366行目: | 1,424行目: | ||
<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]][[カテゴリ:Raspberry Pi]][[カテゴリ:Qt]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry Pi]][[カテゴリ:Qt]] | ||