MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Qt5 PinePhoneのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Qt5 PinePhone
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == PinePhoneに搭載されているAllwinner A64 SoC(sun50iw1)は、Cortex-A53 ARM CPU(クアッドコア)とARM社のMali400 MP2 GPUを搭載している。<br> <br> A64は、基本的にAllwinner H3のCortex-A7コアをCortex-A53コアに置き換えたものである。<br> メモリマップ、クロック、割り込みのほとんどを共有しており、IPブロックも同じものを使用している。<br> <br> H3とA64の違いは以下の通りである。<br> <br> H3は、USBホストコントローラを3つ搭載しているのに対して、A64は1つしか搭載していない。<br> どちらのSoCもUSB-OTGコントローラを追加しているが、これは通常のホストコントローラとしても使用することを想定している。<br> <br> H3のDRAMコントローラは最大2[GB]のRAMをサポートしており、A64は最大3[GB]をサポートしている。<br> 64bitチップでありながら、物理的には完全に3bitのSoCとなっている。<br> <br> H3は5個のUARTをサポートしており、A64は6個のUARTをサポートしている。<br> MMCコントローラーが更新され、より高速な転送モードをサポートしている。<br> MMCのクロックは途中で変更され、現在はMMCコントローラ自身が出力とサンプルフェーズをサポートしている。<br> <br> H3はSRAM A1がアドレス0にマッピングされており、BROMは0xffff0000にある。<br> A64はBROMがアドレス0にマッピングされており、SRAM A1はそのすぐ後ろの0x10000(64KB)にマッピングされている。<br> <br> pinmuxの構成はまだ多少似ているが、互換性のない程度に異なる。<br> 顕著な例は(デバッグ用の)UART0で、H3ではPortAにあるが、A64ではPortBにある。<br> H3にはPortBが無い。<br> <br> PinePhoneとQtでのクロス開発は、以下に示すような手順で行う。<br> Qtはクロスプラットフォーム開発が容易になっており、また、Qt CreatorによるGUI設計ツールもあるため、開発が効率化されている。<br> ただし、PinePhoneのハードウェア固有の機能を扱う場合は、さらに注意が必要となる。<br> * 開発環境の構築 *: ホストPCにQt SDKをインストールする。Qtは、クロスプラットフォームのアプリケーション開発が可能である。 *: PinePhoneのAArch64アーキテクチャ向けのQtクロスコンパイラツールチェーンをインストールする。 *: <br> * 統合開発環境を使用してアプリケーション開発 *: Qt CreatorまたはCLionのようなIDEを使用して、UI設計やコーディングを行う。 *: シグナル / スロット、Qt Quick、QML等、Qtの機能を活用してアプリケーションを開発する。 *: <br> * クロスコンパイル *: アプリケーションのコードをPinePhoneのAArch64アーキテクチャ向けにクロスコンパイルする。 *: この時、事前にインストールしたクロスコンパイラツールチェーンを利用する。 *: <br> * PinePhoneへのデプロイ *: クロスコンパイルされたバイナリをPinePhoneに転送する。 *: PinePhoneでアプリケーションを実行して、動作確認を行う。 <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! colspan="3" style="background-color:#44CC99;" | 参考書 |- style="text-align: center;" | <center><html><a href="https://www.amazon.co.jp/Mastering-Qt-stunning-cross-platform-applications-ebook/dp/B07DH9YK9Q?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=29KSQHSJC9DB3&keywords=Qt+5&qid=1667806384&qu=eyJxc2MiOiIwLjAwIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=qt+5%2Caps%2C196&sr=8-1&linkCode=ll1&tag=presire2-22&linkId=2118a0260e6e51aa7f7440827dee4266&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/71ZdxoixPvL._SL1500_.jpg" ></a></html><br>[https://www.amazon.co.jp/Mastering-Qt-stunning-cross-platform-applications-ebook/dp/B07DH9YK9Q?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=29KSQHSJC9DB3&keywords=Qt+5&qid=1667806384&qu=eyJxc2MiOiIwLjAwIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=qt+5%2Caps%2C196&sr=8-1&linkCode=ll1&tag=presire2-22&linkId=2118a0260e6e51aa7f7440827dee4266&language=ja_JP&ref_=as_li_ss_tl Mastering Qt 5<br>C++, Qt Widgets, QMLを使用したクロスプラットフォームアプリケーションの作成]</center> | <center><html><a href="https://www.amazon.co.jp/Hands-Mobile-Embedded-Development-Raspberry-ebook/dp/B07RH6QM95?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=29KSQHSJC9DB3&keywords=Qt+5&qid=1667806384&qu=eyJxc2MiOiIwLjAwIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=qt+5%2Caps%2C196&sr=8-6&linkCode=ll1&tag=presire2-22&linkId=fabbe4470bf7cb690cadc2cf00e7af96&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/91V16o+L03L._SL1500_.jpg" ></a></html><br>[https://www.amazon.co.jp/Hands-Mobile-Embedded-Development-Raspberry-ebook/dp/B07RH6QM95?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=29KSQHSJC9DB3&keywords=Qt+5&qid=1667806384&qu=eyJxc2MiOiIwLjAwIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=qt+5%2Caps%2C196&sr=8-6&linkCode=ll1&tag=presire2-22&linkId=fabbe4470bf7cb690cadc2cf00e7af96&language=ja_JP&ref_=as_li_ss_tl Hands-On Mobile and Embedded Development with Qt 5<br>C++/QtでAndroid, iOS, Raspberry Pi用のアプリケーションを作成]</center> | <center><html><a href="https://www.amazon.co.jp/Qt5-GUI-Programming-Cookbook-cross-platform/dp/1789803829?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=29KSQHSJC9DB3&keywords=Qt+5&qid=1667806384&qu=eyJxc2MiOiIwLjAwIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=qt+5%2Caps%2C196&sr=8-14&linkCode=ll1&tag=presire2-22&linkId=981d01e080c07e69b683bbd3eee91fd9&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/717s6aji8ZL._SL1360_.jpg" ></a></html><br>[https://www.amazon.co.jp/Qt5-GUI-Programming-Cookbook-cross-platform/dp/1789803829?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=29KSQHSJC9DB3&keywords=Qt+5&qid=1667806384&qu=eyJxc2MiOiIwLjAwIiwicXNhIjoiMC4wMCIsInFzcCI6IjAuMDAifQ%3D%3D&sprefix=qt+5%2Caps%2C196&sr=8-14&linkCode=ll1&tag=presire2-22&linkId=981d01e080c07e69b683bbd3eee91fd9&language=ja_JP&ref_=as_li_ss_tl Qt5 C++ GUI Programming Cookbook<br>Qt5でクロスプラットフォームのアプリケーションの作成]</center> |} </center> <br><br> == ホストPCの設定 == ==== クロスビルドの必要なライブラリのインストール ==== Linux PCにおいて、以下の依存関係のライブラリをインストールする。<br> (Texinfoは、GNU公式Webサイトにアクセスして、ソースコードからインストールすることを推奨する)<br> 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 <br> ==== GCCツールチェーンのダウンロード ==== Linero社が提供しているGCC ARMツールチェーンをダウンロードする。<br> * GCC 7.5 : https://releases.linaro.org/components/toolchain/binaries/ * GCC 10.2 : https://snapshots.linaro.org/components/toolchain/binaries/10.2-2021.01-3/aarch64-linux-gnu/ <br> Linaroは、アップストリームビルドのスナップショットをユーザに提供するGNUツールチェーン・インテグレーションビルドを毎月提供している。<br> これらのビルドにより、開発者はビルド済みバイナリの機能をアップストリームですぐにテストすることができる。<br> * GCCツールチェーン群 : https://snapshots.linaro.org/gnu-toolchain/ <br> tar xf gcc-linaro-<バージョン>-x86_64_aarch64-linux-gnu.tar.xz <br> ==== Wayland-Scannerのインストール ==== この設定は不要の可能性ある。<br> <br> Wayland-Scannerをインストールするには、MesonとNinjaをビルドする必要がある。<br> <br> まず、Wayland Scannerのビルドに必要なライブラリをインストールする。<br> sudo zypper install libxml2-devel <br> 次に、Wayland Scannerのソースコードをダウンロードする。<br> git clone https://gitlab.freedesktop.org/wayland/wayland cd wayland && mkdir build <br> Wayland Scannerをビルドする。<br> <u>Wayland Scannerのインストールディレクトリは、PinePhoneのホスト向けターゲットディレクトリを指定すること。</u><br> meson ./build/ --prefix=<Wayland-Scannerのインストールディレクトリ> -Ddocumentation=false ninja -C build/ install <br><br> == PinePhoneの設定 == Qtのクロスコンパイルの手順において、SSH接続ができることが必須のため、SSH Serverをインストールおよび設定する。<br> # Mobian sudo apt-get install openssh-server # Manjaro sudo pacman -S openssh <br> 必要に応じて、公開鍵認証を行う場合は、[[設定 - SSHの公開鍵認証|設定 - SSHの公開鍵認証]]を参照すること。<br> <br> SSH Serverの自動起動設定および開始する。<br> sudo systemctl enable ssh sudo systemctl restart ssh <br> MobianまたはManjaroをアップデートする。<br> # Mobian sudo apt-get update sudo apt-get dist-upgrade sudo systemctl reboot # Manajro sudo pacman -Syyu sudo systemctl reboot <br> Qtライブラリをクロスコンパイルするために必要なライブラリをインストールする。<br> Qtライブラリのビルド設定によっては、不要なパッケージも含まれている。<br> # Mobian sudo apt-get install unzip ccache pkgconf-bin pkg-config libpkgconf3 pkgconf build-essential make autoconf cmake extra-cmake-modules gcc gfortran gdb gdbserver python3 libgtk-3-dev \ libc6 libc6-dev linux-libc-dev glibc-source libc-dev-bin libc-devtools libglib2.0-0 libglib2.0-dev libglib2.0-dev-bin \ libgmp-dev libmpc-dev libmpfr-dev libisl-dev gconf2 gconf2-common libgconf2-dev \ libdbus-1-3 libdbus-1-dev libdbus-c++-bin libdbus-c++-dev libsctp1 libsctp-dev libatspi2.0-0 libatspi2.0-dev libzstd1 libzstd-dev \ libinput-bin libinput-dev libts0 libts-bin libts-dev libmtdev1 libmtdev-dev libevdev2 libevdev-dev libicu-dev icu-devtools \ libblkid1 libblkid-dev libffi8 libffi-dev libmount1 libmount-dev libudev1 libudev-dev libhd21 libhd-dev libtsm-dev \ pcre2-utils libpcre2-32-0 libpcre2-dev libselinux1 libselinux1-dev libsepol2 libsepol-dev libwacom9 libwacom-dev libassimp5 libassimp-dev \ libproxy-dev liblttng-ust1 liblttng-ust-common1 liblttng-ust-dev libb2-1 libb2-dev libsdl2-dev \ libfontconfig1 libfontconfig-dev libfontconfig1-dev libjpeg-dev libjpeg62-turbo libjpeg62-turbo-dev libjpeg-dev libasound2 libasound2-dev \ sqlite3 libsqlite3-0 libsqlite3-dev libssl3 libssl-dev libnss3 libnss3-dev libxslt1.1 libxslt1-dev libpugixml1v5 libpugixml-dev \ libxkbcommon-dev libxcb-xinerama0 libxcb-xinerama0-dev libglut3.12 libglut-dev \ libwayland-bin libwayland-dev libwayland-egl1 libwayland-egl++1 libwayland-egl1-mesa libwayland-egl-backend-dev \ libwayland-client++1 libwayland-client-extra++1 libwayland-cursor++1 wayland-scanner++ wayland-protocols waylandpp-dev \ libosmesa6-dev mesa-common-dev libopengl-dev libgl-dev libglm-dev libgl1-mesa-dev libgle3-dev libgles-dev libgles2-mesa-dev libegl-dev libegl1-mesa-dev \ libgegl-dev libglu1-mesa libglu1-mesa-dev libglw1-mesa-dev libglfw3-dev libglew-dev libglx-dev libgbm-dev libdrm-dev libdirectfb-dev \ libglvnd-dev libglvnd-core-dev libglut-dev libopenal-dev libalut-dev \ libweston-10-0 libweston-10-dev # Manjaro sudo pacman -S --needed base-devel util-linux-libs glib2 cmake unzip pkg-config gdb gdb-common gdbm gcc gcc-libs gcc-fortran python3 \ gmp libmpc mpfr libisl ccache icu lksctp-tools python-atspi zstd libinput libtsm mtdev libevdev libffi pcre pcre2 \ libwacom assimp fontconfig dbus dbus-c++ nss libxkbcommon alsa-lib libxinerama pugixml sqlite libxslt openssl \ wayland wayland-utils wayland-protocols egl-wayland waylandpp waylandpp wrapland wlc wayfire glew-wayland glfw-wayland libva1 \ mesa mesa-utils glu libglvnd libb2 lttng-ust libproxy <br> MobianおよびManjaroにおいて、マルチメディア関連やBluetooth等を使用する場合、下表に示す任意のパッケージをインストールする。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ Mobian向け その他のライブラリ(オプション) |- ! style="background-color:#66CCFF;" | 機能 ! style="background-color:#66CCFF;" | インストールするライブラリ ! style="background-color:#66CCFF;" | configureスクリプトのオプション |- | Bluetooth || bluez bluez-tools libbluetooth-dev || |- | 画像 || libjpeg-dev libpng-dev libtiff-dev libmng-dev libwebp-dev || |- | コーデック || libavcodec-dev libavformat-dev libavutil-dev libavdevice-dev libavfilter-dev libswscale-dev libswresample-dev<br>libpostproc-dev libv4l-dev libxvidcore-dev libx264-dev libx265-dev || |- | マルチメディア || libwmf-dev libgstreamer1.0-0 libgstreamer1.0-dev libgstreamermm-1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base<br>gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad<br>libgstreamer-plugins-bad1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-tools<br>gstreamer1.0-alsa gstreamer1.0-x gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5<br>libwayland-dev(Wayland開発パッケージは、gstreamerヘッダで必要) || |- | ALSAオーディオ || libasound2-dev || |- | Pulseオーディオ || pulseaudio libpulse-dev || |- | OpenALオーディオ || libopenal-data libopenal1 libopenal-dev libsndio7.0 libsndio-dev || |- | Text to Speech || flite1-dev libspeechd-dev || |- | シリアルポート || libserialport-dev || |- | センサ || libsensors-dev libsensors4-dev ※要調査 || |- | GPS || libgps-dev ※要調査 || |- | データベース || unixodbc unixodbc-common unixodbc-dev (ODBC)<br>libsqlite3-dev (SQLite)<br>libpq-dev(PostgreSQL)<br>libmariadbclient-dev(MariaDB / MySQL) |- | プリンタ || libcups2-dev || |- | Wayland || libwayland-dev || |- | X11 || libfontconfig-dev libfontconfig1-dev libfreetype6-dev<br>libx11-dev libx11-xcb-dev libsm-dev libice-dev<br>libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev<br>libxfixes-dev libxrender-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 libxcb-damage0-dev<br>libxcb-composite0-dev libxcb-record0-dev libxcb-present-dev libxcb-res0-dev libxcb-render0-dev<br>libxcb-xinput-dev libxcb-xv0-dev libxcb-xtest0-dev libxcb-cursor-dev libxcb-util-dev libxcb-ewmh-dev libxcb-xvmc0-dev<br>libxcb-imdkit-dev<br>libxcb-xrm-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-dpms0-dev libxcb-xf86dri0-dev || |- | WebEngine || 必須 :<br>flex bison gperf libre2-dev libnss3-dev libdrm-dev<br><br>オプション1 :<br>libxml2-dev libxslt1-dev libminizip-dev libjsoncpp-dev liblcms2-dev libevent-dev libprotobuf-dev<br>protobuf-compiler<br><br>オプション2(不安定なため注意すること) :<br>libopus-dev libvpx-dev || |- | アクセシビリティ || libatspi2.0-dev || |- | SCTP || libsctp1 libsctp-dev || -sctp |} </center> <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ Manjaro向け その他のライブラリ(オプション) |- ! style="background-color:#66CCFF;" | 機能 ! style="background-color:#66CCFF;" | インストールするライブラリ ! style="background-color:#66CCFF;" | configureスクリプトのオプション |- | Bluetooth || bluez bluez-tools bluez-libs bluez-utils || |- | 画像 || openjpeg2 libjpeg-turbo libpng libtiff libmng || |- | マルチメディア || gstreamer gstreamermm gst-plugins-base gst-plugins-base-libs gst-plugins-good<br>gst-plugins-bad gst-plugins-bad-libs<br>gst-plugins-ugly gst-libav gst-plugin-wpe gst-plugin-pipewire gst-plugin-gtk<br>qt-gstreamer gst-plugin-qmlgl gst-plugin-opencv || |- | ALSAオーディオ || alsa-lib || |- | Pulseオーディオ || pulseaudio-alsa || |- | OpenAL || openal || |- | Text to Speech || flite || |- | シリアルポート || libserialport || |- | センサ || sensorfw || |- | データベース || postgresql-libs libpqxx (PostgreSQL)<br>mariadb-clients mariadb-libs (MariaDB) unixodbc (ODBC)<br>sqlite (SQLite) | |- | プリンタ || libcups || |- | Wayland (X11) || xorg-xwayland || |- | X11 || || |- | WebEngine || 必須 :<br>flex bison gperf readline nss libdrm<br><br>オプション1 :<br>libxml2 libxml++ libxslt minizip jsoncpp lcms2 libevent protobuf protobuf-c<br><br>オプション2(不安定なため注意すること) :<br>opus libvpx || |- | アクセシビリティ || at-spi2-core at-spi2-atk || |- | SCTP || lksctp-tools || -sctp |} </center> <br> 上表のライブラリを全てインストールする場合<br> * Mobianの場合 sudo apt install bluez bluez-tools libbluetooth-dev libjpeg-dev libpng-dev libtiff-dev libmng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev \ libx264-dev libx265-dev \ libgstreamer1.0-dev libgstreamermm-1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev libopenal-dev libsndio-dev libwayland-dev \ unixodbc-dev libsqlite3-dev libcups2-dev \ libx11-dev libxcb1-dev libxext-dev libxi-dev libxcomposite-dev libxcursor-dev libxtst-dev libxrandr-dev libx11-xcb-dev libxext-dev \ libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev \ libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util0-dev libxcb-xinerama0-dev libxcb-xkb-dev \ libxkbcommon-dev libxkbcommon-x11-dev \ flex bison gperf libre2-dev libnss3-dev libdrm-dev \ libxml2-dev libxslt1-dev libminizip-dev libjsoncpp-dev liblcms2-dev libevent-dev libprotobuf-dev protobuf-compiler libopus-dev libvpx-dev \ libatspi2.0-dev libsctp1 libsctp-dev <br> * Manjaro ARMの場合 sudo pacman -S --needed bluez bluez-libs openjpeg2 libjpeg-turbo libpng libtiff libmng \ gstreamer gstreamermm gst-plugins-base gst-plugins-base-libs gst-plugins-good gst-plugins-bad gst-plugins-bad-libs gst-plugins-ugly \ gst-libav gst-plugin-wpe gst-plugin-pipewire gst-plugin-gtk qt-gstreamer gst-plugin-qmlgl gst-plugin-opencv \ alsa-lib pulseaudio-alsa openal flite \ libserialport sensorfw unixodbc sqlite libcups xorg-xwayland flex bison gperf readline nss libdrm libxml2 libxml++ libxslt \ minizip jsoncpp lcms2 libevent protobuf protobuf-c opus libvpx at-spi2-core at-spi2-atk lksctp-tools <br> 次のセクションにおいて、rsyncコマンドを使用してLinux PCとPinePhoneのファイルを同期する。<br> しかし、同期するファイルには、スーパユーザ権限が必要なものがある。<br> <br> そのため、一般ユーザでも全てのファイルを同期できるように、/etc/sudoersファイルに以下の設定を追記する。<br> 以下の設定により、rsyncコマンドは、必要に応じてスーパユーザ権限で実行される。<br> echo "$USER ALL=NOPASSWD:$(which rsync)" | sudo tee --append /etc/sudoers <br><br> == システムルートディレクトリの設定 == Linux PCで、PinePhone向けのQtソフトウェアをクロスコンパイルできるように開発環境を設定する。<br> PinePhone上でネイティブにコンパイルすることもできるが、Linux PCの方がスループットが良い。<br> <br> Linux PC上に開発用ディレクトリを作成する。<br> また、PinePhoneのいくつかのルートディレクトリと同期する必要があるため、システムルートディレクトリも作成する。<br> mkdir -p ~/Program/Qt_Embedded/sysroot \ ~/Program/Qt_Embedded/sysroot/usr \ ~/Program/Qt_Embedded/sysroot/usr/share <br> <code>rsync</code>コマンドを使用して、PinePhoneに存在するいくつかのディレクトリから、ファイルをダウンロードする。<br> rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/lib ~/Program/Qt_Embedded/sysroot rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/usr/include ~/Program/Qt_Embedded/sysroot/usr rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/usr/lib ~/Program/Qt_Embedded/sysroot/usr rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/usr/share/pkgconfig ~/Program/Qt_Embedded/sysroot/usr/share <br> ダウンロードしたシステムルートディレクトリにあるファイルおよびディレクトリのシンボリックリンクを相対的に調整する。<br> fixQualifiedLibraryPathsが正常に動作しないため、提供されたスクリプトをダウンロードして実行する。<br> wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py chmod +x sysroot-relativelinks.py ./sysroot-relativelinks.py ~/Program/Qt_Embedded/sysroot <br><br> == Qtのソースコードのダウンロード == * Qt Everywhere (推奨)<br> *: [https://download.qt.io/official%20releases/qt/5.15/ Qtの公式Webサイト]にアクセスして、Qt 5.15のソースコードをダウンロードする。 *: <code>wget https://download.qt.io/official_releases/qt/x.x/x.x.x/single/qt-everywhere-src-x.x.x.tar.xz</code> *: <code>tar xf qt-everywhere-opensource-src-x.x.x.tar.gz</code> *: <br> * Githubの使用 *: GithubからQtのソースコードを個別にダウンロードする。<br> *: <code>git clone https://github.com/qt/qt5.git</code> *: <br> *: ダウンロードしたスーパーリポジトリに移動する。<br> *: <code>cd qt5</code> *: <code>git checkout <Qtのバージョン></code> *: または *: <code>git checkout <Qtのショートバージョン></code> *: <br> *: <code>init-repository</code>コマンドは、Qtが提供する指定したモジュールのソースコードを取得するためのツールである。<br> *: スーパーリポジトリは小さく、全てのモジュール(ライブラリ)はgit submodulesとして保持されている。<br> *: <br> *: 利用可能な全てのモジュールについては[https://doc.qt.io/qt-5/qtmodules.html こちらのWebサイト]、ツールについては<code>init-repository --help</code>コマンドまたは[https://github.com/qt/qt5/blob/dev/init-repository こちらのWebサイト]を参照すること。<br> *: <code>./init-repository --module-subset=essential,qtsvg,qtvirtualkeyboard,qtquickcontrols</code> *: <code>./init-repository -f --module-subset=qtquick3d,qtquicktimeline,qtwayland</code> # 必要な場合は個別に追加ダウンロードする <br><br> == デバイス定義ファイルの作成 == Qtのソースコードがあるディレクトリにおいて、qtbase/mkspecs/devices/linux-pinephone-g++ディレクトリを作成する。<br> mkdir <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++ <br> 次に、<Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++/qplatformdefs.hファイルを以下の内容で作成する。<br> vi <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++/qplatformdefs.h <br> <syntaxhighlight lang="c++"> // qplatformdefs.hファイル #include "../../linux-g++/qplatformdefs.h" </syntaxhighlight> <br> さらに、<Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++/qmake.confファイルを以下の内容で作成する。<br> vi <Qtのソースコードがあるディレクトリ>/qtbase/mkspecs/devices/linux-pinephone-g++/qmake.conf <br> # qmake.confファイル # qmake configuration for the PinePhone(Based A20_OlinuxinO boards) include(../common/linux_device_pre.conf) #QT_QPA_DEFAULT_PLATFORM = eglfs # 不要の可能性があるため要調査 QT_QPA_DEFAULT_PLATFORM = wayland # 不要の可能性があるため要調査 SYSROOT_INC = $$[QT_SYSROOT]/usr/include SYSROOT_LIB = $$[QT_SYSROOT]/usr/lib # Extra stuff (OpenGL, DirectFB, ...) QMAKE_INCDIR_EGL = $$[SYSROOT_INC] \ $$[SYSROOT_INC]/aarch64-linux-gnu \ $$[SYSROOT_INC]/GL \ $$[SYSROOT_INC]/EGL \ $$[SYSROOT_INC]/GLES \ $$[SYSROOT_INC]/GLES2 \ $$[SYSROOT_INC]/GLES3 \ $$[SYSROOT_INC]/GLFW QMAKE_LIBDIR_EGL = $$[SYSROOT_LIB] \ $$[SYSROOT_LIB]/aarch64-linux-gnu QMAKE_INCDIR_OPENGL_ES2 = $$[QMAKE_INCDIR_EGL] QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL} QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} # 不要の可能性があるため要調査 QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL} # 不要の可能性があるため要調査 QMAKE_LIBS_EGL = -lEGL QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL} # 不要の可能性があるため要調査 # modifications to gcc-base.conf QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a53 # PinePhoneの場合 #QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 -lts # PinePhone Proの場合 QMAKE_CFLAGS_RELEASE += -O3 QMAKE_CXXFLAGS = $$QMAKE_CFLAGS QMAKE_CXXFLAGS_RELEASE += -O3 QMAKE_LIBS += -lrt -lpthread -ldl -lz # Linaro GCC ARM 7.5 ツールチェーンを使用する場合 #QMAKE_LIBS += -lrt -lpthread -ldl # GCC ARM 8.3 以降のツールチェーンを使用する場合 DISTRO_OPTS += aarch64 DISTRO_OPTS += deb-multi-arch # Mobian OSを使用する場合は指定する # 他のOSを使用する場合は、削除またはコメントアウトする # Preferred eglfs backend EGLFS_DEVICE_INTEGRATION = eglfs_mali include(../common/linux_arm_device_post.conf) load(qt_config) <br><br> == Qtのビルド == ==== GCC 11以降を使用する場合 ==== GCC 11以降のツールチェーンを使用する場合、Qt 5.15のビルド時において、以下に示すエラーが発生する場合がある。<br> error: 'numeric_limits' is not a member of 'std' static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max(); error: expected primary-expression before '>' token static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max(); error: '::max' has not been declared; did you mean 'std::max'? static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max(); <br> これは、std::limitsが削除されて、limits.hファイルに移行されたからである。<br> もし、GCC 11以降を使用してQt 5.15をビルドする場合は、qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qglobal.hファイルを、以下に示すように編集する。<br> vi qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qglobal.h <br> <syntaxhighlight lang="c++"> // qt-everywhere-src-5.15.2/qtbase/src/corelib/global/qglobal.hファイル // 45〜48行目あたり // 編集前 #ifdef __cplusplus # include <type_traits> # include <cstddef> # include <utility> #endif // 編集後 #ifdef __cplusplus # include <type_traits> # include <cstddef> # include <utility> #include <limits> #endif </syntaxhighlight> <br> ==== GCC 13を使用する場合 ==== GCC 13を使用する場合、QtLocationのビルドにおいて、以下に示すようなビルドエラーが出力される場合がある。<br> error: 'uint8_t' was not declared in this scope <br> これは、GCC 13では、いくつかの内部インクルードをシャッフルしているため、<code><cstdint></code>は過渡的にインクルードされない。<br> <code>uint8_t</code>には<code><cstdint></code>を明示的にインクルードする必要がある。<br> <br> <syntaxhighlight lang="c++"> // qt-everywhere-src-5.15.XX/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/string.hppファイル // 7行目 #include <cstdint> // 追加 // qt-everywhere-src-5.15.XX/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/geometry.hppファイル // 6行目 #include <cstdint> // 追加 // qt-everywhere-src-5.15.XX/qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/gl/stencil_mode.hppファイル // 4行目 #include <cstdint> // 追加 </syntaxhighlight> <br> ==== Qtのビルド ==== Qtをビルドするため、ビルド用のディレクトリを作成する。<br> mkdir /<Qtのソースコードがあるディレクトリ>/../build && cd /<Qtのソースコードがあるディレクトリ>/../build <br> Configureスクリプトを実行する。<br> export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH" export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" export PKG_CONFIG_PATH="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig" export PKG_CONFIG_LIBDIR="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig:/<SysRootがあるディレクトリ>/usr/share/pkgconfig" # コンパイラの設定 export COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-" # または # export COMPILER="/<GCC ARMツールチェーンのインストールディレクトリ>/bin/aarch64-unknown-linux-gnu-" ../<Qtのソースコードがあるディレクトリ>/configure -v -release \ -opensource \ -confirm-license \ -opengl es2 \ -qpa wayland \ -device linux-pinephone-g++ \ -device-option CROSS_COMPILE=$COMPILER \ -nomake examples -no-compile-examples -nomake tests -make libs -no-use-gold-linker -recheck-all \ -skip qtscript -skip qtwebengine -skip qtandroidextras -skip qtmacextras -skip qtwinextras \ -skip qtgamepad -skip qtpurchasing -skip qtcharts -skip qtsensors \ (不要な場合) -skip qtlocation -skip qtspeech -skip qtlottie \ (不要な場合) -skip qtdoc \ -sysroot /<SysRootが存在するディレクトリ>/sysroot \ -prefix /<Qtソフトウェアを配置するディレクトリ>/QtSoftware \ -extprefix /<PinePhoneにインストールするQtライブラリを配置するディレクトリ>/Target \ -hostprefix /<Linux PCで使用するQtツールを配置するディレクトリ>/Host <br> Qtをビルドおよびインストールする。<br> gmake -j $(nproc) gmake install <br> ==== Qt Waylandのビルド ==== まず、Qt Waylandのソースコードのディレクトリ(/<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner)に対して、<br> wayland-text-input-unstable-v2-client-protocolファイル、wayland-text-input-unstable-v2-server-protocol.hファイル、wayland-wayland-client-protocol.hファイルを作成する。<br> <br> <u>なお、wayland-text-input-unstable-v2-client-protocolファイルとwayland-text-input-unstable-v2-server-protocol.hファイルは、空のファイルである。</u><br> touch /<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-text-input-unstable-v2-client-protocol.h \ /<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-text-input-unstable-v2-server-protocol.h \ /<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-wayland-client-protocol.h <br> vi /<Qtのソースコードがあるディレクトリ>/qtwayland/config.tests/wayland_scanner/wayland-wayland-client-protocol.h <br> <syntaxhighlight lang="c++"> // wayland-wayland-client-protocol.hファイル #include "../../../../../src/client/wayland-wayland-client-protocol.h" </syntaxhighlight> <br> 次に、Wayland Scannerをインストールする。<br> なお、Wayland Scannerのビルドには、Meson(Pythonライブラリ)とNinjaが必要である。<br> # Wayland Scannerのビルドに必要なライブラリをインストールする。 #: <code>sudo zypper install meson ninja expat-devel libxml2-devel</code> #: <br> # Wayland Scannerのソースコードをダウンロードする。<br> #: <code>git clone https://github.com/wayland-project/wayland.git</code> #: <code>cd wayland && mkdir build</code> #: <br> # Wayland Scannerのビルドおよびインストールする。 #: <code>meson ./build --prefix=<上記でインストールしたQtツールのインストールディレクトリ> -Ddocumentation=false</code> #: <code>ninja -C ./build install</code> <br> 最後に、Qt Waylandをビルドおよびインストールする。<br> export PATH="/<Wayland Scannerのインストールディレクトリ>/bin:$PATH" export LD_LIBRARY_PATH="/<Wayland Scannerのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="/<上記でインストールしたQtライブラリのインストールディレクトリ>/lib:$LD_LIBRARY_PATH" export PKG_CONFIG_PATH="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig" export PKG_CONFIG_LIBDIR="/<SysRootがあるディレクトリ>/usr/lib/pkgconfig:/<SysRootがあるディレクトリ>/usr/lib/aarch64-linux-gnu/pkgconfig:/<SysRootがあるディレクトリ>/usr/share/pkgconfig" cd /<Qtのソースコードがあるディレクトリ>/qtwayland mkdir build && cd build /<上記でインストールしたQtツールがあるディレクトリ>/bin/qmake ../qtwayland.pro <br> ==== Qt SVGのビルド ==== もし、Qt SVGをビルドおよびインストールしていない場合は、手動で行う。<br> <u>なお、Qt SVGをインストールするには、上記でインストールしたQtツール(Linux PC向け)のディレクトリにあるqmakeファイルを使用する必要がある。</u><br> <br> まず、Qt SVGのソースコードが存在するディレクトリに移動して、ビルド用ディレクトリを作成する。<br> cd /<Qtのソースコードがあるディレクトリ>/qtsvg mkdir build && cd build <br> Qt SVGをビルドおよびインストールする。<br> <u>なお、Qt SVGのインストールディレクトリは、自動的にQtライブラリ(ターゲット向け)のディレクトリにインストールされる。</u><br> <u>そのため、<code>DESTDIR</code>オプション等は付加しない。(付加しても無視される)</u> /<上記でインストールしたLinux PC向けのQtツールのディレクトリ>/Host/bin/qmake ../qtsvg.pro make -j $(nproc) make install <br> ==== Qt Virtual Keyboardのビルド ==== もし、Qt Virtual Keyboardをビルドおよびインストールしていない場合は、手動で行う。<br> この時、Qt Virtual Keyboardがインストールされているディレクトリを環境変数<code>LD_LIBRARY_PATH</code>に追加する必要がある。<br> <br> <u>なお、Qt Virtual Keyboardをインストールするには、上記でインストールしたQtツール(Linux PC向け)のディレクトリにあるqmakeファイルを使用する必要がある。</u><br> <br> まず、Qt Virtual Keyboardのソースコードが存在するディレクトリに移動して、ビルド用ディレクトリを作成する。<br> cd /<Qtのソースコードがあるディレクトリ>/qtvirtualkeyboard mkdir build && cd build <br> Qt Virtual Keyboardをビルドおよびインストールする。<br> <u>なお、Qt Virtual Keyboardのインストールディレクトリは、自動的にQtライブラリ(ターゲット向け)のディレクトリにインストールされる。</u><br> <u>そのため、<code>DESTDIR</code>オプション等は付加しない。(付加しても無視される)</u> export LD_LIBRARY_PATH="/<上記でインストールしたQtライブラリ(ターゲット向け)のディレクトリ>/lib:$LD_LIBRARY_PATH" /<上記でインストールしたLinux PC向けのQtツールのディレクトリ>/Host/bin/qmake "CONFIG+=lang-all" ../qtvirtualkeyboard.pro make -j $(nproc) make install <br><br> == Qtライブラリのインストール == ビルドしたQtライブラリを、PinePhoneにデプロイする。<br> <br> まず、~/Program/Qt_Embedded/Qt5ディレクトリに存在する全てのファイルを、PinePhoneの任意のディレクトリ(例. ~/InstallSoftware/Qt_5_x_xディレクトリ)に同期させる。<br> rsync -avz --rsh="ssh -p <ポート番号> -i <秘密鍵のフルパス>" \ ~/Program/Qt_Embedded/Target <PinePhoneのユーザ名>@<PinePhoneのホスト名またはIPアドレス>:/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x <br> <u>※注意</u><br> <u>PinePhoneにアップロードしたQtライブラリの所有者がrootになっている場合があるため、</u><br> <u>以下のコマンドを実行して、所有者をローカルユーザに変更する必要がある。</u><br> sudo chown -R <ユーザ名>:<グループ名> ~/InstallSoftware/Qt_5_x_x <br> PinePhoneのリンカがQtライブラリを読み込むようにするため、以下のコマンドを実行する。<br> /etc/ld.so.conf.dディレクトリに配置する場合、ファイル名の先頭に"<code>00</code>"を付加すること。<br> <br> <u>※注意</u><br> <u>~/.profileファイルに環境変数<code>LD_LIBRARY_PATH</code>を設定する場合、再度、Qt Creatorで環境変数<code>LD_LIBRARY_PATH</code>を設定する必要がある。</u><br> <u>Qt Creatorでの設定は、Qt Creatorメイン画面左にある[プロジェクト] - [RUN] - [Environment]で設定する。</u><br> # .profileファイルに設定する場合 export LD_LIBRARY_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/lib:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/plugins/qmltooling:$LD_LIBRARY_PATH" # /etc/ld.so.conf.d/00-Qt_5_x_x.confファイルに設定する場合 echo /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/lib | sudo tee /etc/ld.so.conf.d/00-Qt_5_x_x.conf echo /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/plugins/qmltooling | sudo tee /etc/ld.so.conf.d/00-Qt_5_x_x.conf <br> ライブラリを読み込む。<br> # .profileファイルに設定した場合 source ~/.profile # /etc/ld.so.conf.d/00-Qt_5_x_x.confファイルに設定した場合 sudo ldconfig <br><br> == Qtライブラリの設定 == さらに、PinePhoneの~/.profileファイルまたは~/.bashrcファイルに、以下の設定を追記する。<br> # Enable Qt Debug export QT_QPA_PLATFORMTHEME="qt5ct" export DISPLAY=":0" または export DISPLAY=":0.0" # export XAUTHORITY="/home/<PinePhoneのユーザ名>/.Xauthrity" (不要) # export XDG_SESSION_TYPE="wayland" (不要) # export XDG_RUNTIME_DIR="<XDG_RUNTIME_DIRに指定するディレクトリ>" (不要) # Enable Qt Quick Debug export QML_IMPORT_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/qml" export QML2_IMPORT_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/qml" export QT_PLUGIN_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/plugins" export QT_QPA_PLATFORM_PLUGIN_PATH="/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_x_x/plugins/platforms" export QML_IMPORT_TRACE=1 <br><br> == Qt Creatorの設定 == 次に、Qt Creatorでソフトウェアを開発する時の環境設定を行う。<br> <br> まず、プロジェクトの環境変数の設定を行う。<br> Qt Creatorを起動して、Qt Creatorメイン画面左の[プロジェクト] - 左ペインの[Run] - 右ペインの[ビルド設定] - [Environment]項目 - [詳細]プルダウンを開く。<br> [詳細]プルダウンから[追加]ボタンを押下して、以下の項目を設定する。<br> <br> <u>Qtプロジェクトをデバッグする場合は、必ず[デバイス環境の取得]ボタンを押下すること。</u><br> * Variable - QT_QPA_PLATFORMTHEME *: Value - qt5ct * Variable - DISPLAY *: Value - :0 または :0.0 * Variable : PATH *: Value : /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/bin ※PATHの設定が既に存在する場合は、追記する * Variable : LD_LIBRARY_PATH (PinePhoneの~/.profileファイルに環境変数LD_LIBRARY_PATHを設定している場合) *: Value : /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/lib:/home/<PinePhone's User Name>/InstallSoftware/Qt_5_15_2/plugins/qmltooling * Variable : QML_IMPORT_PATH *: Value : /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/qml * Variable : QML2_IMPORT_PATH *: Value : /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/qml * Variable : QT_PLUGIN_PATH *: Value : /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/plugins * Variable : QT_QPA_PLATFORM_PLUGIN_PATH *: Value : /home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/plugins/platforms * <del>Variable - XAUTHORITY</del>(不要) *: <del>Value - /home/<PinePhoneのユーザ名>/.Xauthrity</del> * <del>Variable - XDG_SESSION_TYPE(不要)</del> *: <del>Value - wayland</del> <br> また、上記の設定を簡潔に行う場合、Qtプロジェクトのディレクトリにある.pro.userファイルにおいて、<br> <code><valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">〜</valuemap></code>要素内に、以下の設定を追記する。<br> <u>以下の設定を追記する場合、必ず、Qtプロジェクトを閉じた状態で行うこと。</u><br> <syntaxhighlight lang="xml"> # .pro.userファイル <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> <!-- ...略 --> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"> <value type="QString">QT_QPA_PLATFORMTHEME=qt5ct</value> <value type="QString">DISPLAY=:0</value> <value type="QString">PATH=/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> <value type="QString">LD_LIBRARY_PATH=/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/lib:/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/plugins/qmltooling</value> <value type="QString">QML_IMPORT_PATH=/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/qml</value> <value type="QString">QML2_IMPORT_PATH=/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/qml</value> <value type="QString">QT_PLUGIN_PATH=/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/plugins</value> <value type="QString">QT_QPA_PLATFORM_PLUGIN_PATH=/home/<PinePhoneのユーザ名>/InstallSoftware/Qt_5_15_2/plugins/platforms</value> </valuelist> <!-- ...略 --> </valuemap> </syntaxhighlight> <br> もし、デバッグにおいて、以下のようなエラーが出力される場合は、<br> Qt Creatorのサイドメニューから、[プロジェクト] - [Build & Run] - [Run] - [コマンドライン引数:]項目に、<code>-platform wayland</code>を記述する。<br> # エラー内容 Failed to create wl_display (No such file or directory) ... error: XDG_RUNTIME_DIR not set in the environment ... qt.qpa.plugin: Could not load the Qt platform plugin "wayland" <br> <br> 次に、GDBデバッガの設定を行う。<br> リモートターゲットをデバッグする時、GDBは、Linux PC側にダウンロードしているPinePhoneのシステムルートディレクトリを検索する。<br> そのため、GDBにターゲット側のPinePhoneのシステムルートディレクトリを検索するように設定する必要がある。<br> <br> これは、Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br> <u>ただし、この設定はQt Quickを使用する時のみである。(Qt Widgetを使用する場合は設定不要)</u><br> set sysroot target:/ <br> しかし、上記の[追加の起動コマンド]において、<code>set sysroot target:/</code>オプションを使用する場合、デバッグの開始に時間が掛かる。<br> そのため、以下のように、[追加の起動コマンド]を記述して、<br> システムルートディレクトリに対して、Qtライブラリのインストールディレクトリのシンボリックリンクを作成することを推奨する。<br> <br> システムルートディレクトリに対して、Linux PCに保存したPinePhone向けのQtライブラリがあるディレクトリのシンボクリックリンクを作成する。 mkdir -p /<PinePhoneのシステムルートディレクトリ>/home/mobian/InstallSoftware ln -s /<Qtライブラリのインストールディレクトリ> /<PinePhoneのシステムルートディレクトリ>/home/mobian/InstallSoftware # シンボリックリンク名の変更 mv /<PinePhoneのシステムルートディレクトリ>/home/mobian/InstallSoftware/<Qtライブラリのインストールディレクトリ> \ /<PinePhoneのシステムルートディレクトリ>/home/mobian/InstallSoftware/Qt_5_15_2 <br> Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br> # Kit名に"PinePhone"という文字列が入っている場合のみ、PinePhoneのシステムルートディレクトリを参照する # x86 / x64のKitを使用する場合は、PinePhoneのシステムルートディレクトリを参照しない [ -n $(grep -i PinePhone %{ActiveProject:Kit:Name}) ] && set sysroot /<PinePhoneのシステムルートディレクトリ> # または set sysroot /<PinePhoneのシステムルートディレクトリ> <br> もし、デバッグ時において、以下の警告が出力される場合は、GDBのみをGCC AArch64 ToolChain 10.2に変更する。<br> # 警告の内容 while parsing target description (at line 68): Vector "v8f" references undefined type "ieee_half" Could not load XML target description; ignoring <br> GCC AArch64 ToolChain 10.2は、以下に示すURLからダウンロードできる。<br> https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads<br> <br> これにより、PinePhoneでQtライブラリが使用できる。<br> <br><br> == PinePhone向けソフトウェアの設計 == PinePhone向けソフトウェアのUIをデザインする場合、375x812[px]のウィンドウサイズで動作するように指定する。<br> これは、PhoshシェルでPinephoneに表示されるソフトウェアのサイズである。(2倍の拡大率で700x1200[px]の解像度まで)<br> <br> また、画面を横向きする場合は、812x375[px]に反転させる。<br> <br><br> == CLion / Qt 5との連携 == ==== CMakeツールチェーンファイルの作成 ==== 任意のディレクトリにCMakeツールチェーンファイルの作成する。<br> vi /<任意のディレクトリ>/ToolChain_for_PinePhone.cmake <br> <syntaxhighlight lang="cmake"> # /<任意のディレクトリ>/ToolChain_for_PinePhone.cmakeファイル cmake_minimum_required(VERSION 3.18) include_guard(GLOBAL) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(TARGET_SYSROOT <PinePhoneのシステムルートディレクトリ>) 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_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(CMAKE_C_COMPILER /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /<GCCツールチェーンのインストールディレクトリ>/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_CXX_FLAGS "${CMAKE_C_FLAGS}") set(CMAKE_EXE_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") # PinePhoneの場合 set(QT_COMPILER_FLAGS "-march=armv8-a -mtune=cortex-a53") set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe") 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_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT}) set(XCB_PATH_VARIABLE ${TARGET_SYSROOT}) 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(EGL_INCLUDE_DIR ${GL_INC_DIR}) set(EGL_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libEGL.so) set(OPENGL_INCLUDE_DIR ${GL_INC_DIR}) set(OPENGL_opengl_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libOpenGL.so) set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) set(GLIB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv2.so) set(GLESv2_INCLUDE_DIR ${GL_INC_DIR}) set(GLESv2_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv2.so) set(gbm_INCLUDE_DIR ${GL_INC_DIR}) set(gbm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libgbm.so) set(Libdrm_INCLUDE_DIR ${GL_INC_DIR}) set(Libdrm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libdrm.so) set(XCB_XCB_INCLUDE_DIR ${GL_INC_DIR}) set(XCB_XCB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libxcb.so) </syntaxhighlight> <br> ==== Qt 5向けCMakeツールチェーン設定ファイルの作成 ==== PinePhone向けのQt 5ライブラリのインストールディレクトリ内のlib/cmake/Qt5ディレクトリにCMakeツールチェーン設定ファイルの作成する。<br> vi /<Qt 5ライブラリのインストールディレクトリ>lib/cmake/Qt5/qt.toolchain.cmake <br> <syntaxhighlight lang="cmake"> # /<Qt 5ライブラリのインストールディレクトリ>lib/cmake/Qt5/qt.toolchain.cmakeファイル set(__qt_toolchain_used_variables QT_CHAINLOAD_TOOLCHAIN_FILE QT_TOOLCHAIN_INCLUDE_FILE QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR QT_TOOLCHAIN_RELOCATABLE_PREFIX QT_ADDITIONAL_PACKAGES_PREFIX_PATH ) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${__qt_toolchain_used_variables}) list(REMOVE_DUPLICATES CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) if($ENV{_QT_TOOLCHAIN_VARS_INITIALIZED}) foreach(var ${__qt_toolchain_used_variables}) set(${var} "$ENV{_QT_TOOLCHAIN_${var}}") endforeach() endif() set(__qt_initially_configured_toolchain_file "<PinePhone向けCMakeツールチェーンファイルのパス>") set(__qt_chainload_toolchain_file "${__qt_initially_configured_toolchain_file}") if(NOT QT_QMAKE_TARGET_MKSPEC) set(QT_QMAKE_TARGET_MKSPEC <Qt 5のクロスコンパイルで使用したPinePhone向けデバイス定義ファイルのパス> CACHE STRING "") endif() if(NOT "${QT_CHAINLOAD_TOOLCHAIN_FILE}" STREQUAL "") set(__qt_chainload_toolchain_file "${QT_CHAINLOAD_TOOLCHAIN_FILE}") endif() if(__qt_chainload_toolchain_file) get_filename_component(__qt_chainload_toolchain_file_real_path "${__qt_chainload_toolchain_file}" REALPATH) if(__qt_chainload_toolchain_file_real_path STREQUAL CMAKE_CURRENT_LIST_FILE) message(FATAL_ERROR "Woah, the Qt toolchain file tried to include itself recursively! '${__qt_chainload_toolchain_file}' " "Make sure to remove qtbase/CMakeCache.txt and reconfigure qtbase with 'cmake' " "rather than 'qt-cmake', and then you can reconfigure your own project." ) elseif(NOT EXISTS "${__qt_chainload_toolchain_file_real_path}") message(WARNING "The toolchain file to be chainloaded " "'${__qt_chainload_toolchain_file}' does not exist.") else() include("${__qt_chainload_toolchain_file}") set(__qt_chainload_toolchain_file_included TRUE) endif() unset(__qt_chainload_toolchain_file) endif() get_filename_component(QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/../../../ ABSOLUTE) get_filename_component(QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}") list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}") if(NOT QT_AVOID_CUSTOM_PLATFORM_MODULES) list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/platforms") endif() set(__qt_toolchain_additional_packages_prefixes "") if(QT_ADDITIONAL_PACKAGES_PREFIX_PATH) list(APPEND __qt_toolchain_additional_packages_prefixes ${QT_ADDITIONAL_PACKAGES_PREFIX_PATH}) endif() if(DEFINED ENV{QT_ADDITIONAL_PACKAGES_PREFIX_PATH} AND NOT "$ENV{QT_ADDITIONAL_PACKAGES_PREFIX_PATH}" STREQUAL "") set(__qt_env_additional_packages_prefixes $ENV{QT_ADDITIONAL_PACKAGES_PREFIX_PATH}) if(NOT CMAKE_HOST_WIN32) string(REPLACE ":" ";" __qt_env_additional_packages_prefixes "${__qt_env_additional_packages_prefixes}") endif() list(APPEND __qt_toolchain_additional_packages_prefixes ${__qt_env_additional_packages_prefixes}) unset(__qt_env_additional_packages_prefixes) endif() if(__qt_toolchain_additional_packages_prefixes) set(__qt_toolchain_additional_packages_root_paths "") set(__qt_toolchain_additional_packages_prefix_paths "") foreach(__qt_additional_path IN LISTS __qt_toolchain_additional_packages_prefixes) file(TO_CMAKE_PATH "${__qt_additional_path}" __qt_additional_path) get_filename_component(__qt_additional_path "${__qt_additional_path}" ABSOLUTE) set(__qt_additional_path_lib_cmake "${__qt_additional_path}") if(NOT __qt_additional_path_lib_cmake MATCHES "/lib/cmake$") string(APPEND __qt_additional_path_lib_cmake "/lib/cmake") endif() list(APPEND __qt_toolchain_additional_packages_root_paths "${__qt_additional_path}") list(APPEND __qt_toolchain_additional_packages_prefix_paths "${__qt_additional_path_lib_cmake}") endforeach() list(PREPEND CMAKE_PREFIX_PATH ${__qt_toolchain_additional_packages_prefix_paths}) list(PREPEND CMAKE_FIND_ROOT_PATH ${__qt_toolchain_additional_packages_root_paths}) unset(__qt_additional_path) unset(__qt_additional_path_lib_cmake) unset(__qt_toolchain_additional_packages_root_paths) unset(__qt_toolchain_additional_packages_prefix_paths) endif() unset(__qt_toolchain_additional_packages_prefixes) set(__qt_toolchain_extra_file "${CMAKE_CURRENT_LIST_DIR}/qt.toolchain.extra.cmake") if(EXISTS "${__qt_toolchain_extra_file}") include("${__qt_toolchain_extra_file}") endif() if(QT_TOOLCHAIN_INCLUDE_FILE) get_filename_component(__qt_toolchain_include_file_real_path "${QT_TOOLCHAIN_INCLUDE_FILE}" REALPATH) if(EXISTS "${__qt_toolchain_include_file_real_path}") include("${__qt_toolchain_include_file_real_path}") else() message(WARNING "The passed extra toolchain file to be included does not exist: " "${__qt_toolchain_include_file_real_path}") endif() endif() if(DEFINED CACHE{CMAKE_BUILD_TYPE}) set(__qt_toolchain_cmake_build_type_before_project_call "${CMAKE_BUILD_TYPE}") endif() if(NOT "$ENV{_QT_TOOLCHAIN_VARS_INITIALIZED}") set(ENV{_QT_TOOLCHAIN_VARS_INITIALIZED} ON) foreach(var ${__qt_toolchain_used_variables}) set(ENV{_QT_TOOLCHAIN_${var}} "${${var}}") endforeach() endif() </syntaxhighlight> <br> ==== ツールチェーンの設定 ==== [ファイル]メニューバー - [設定]を選択する。<br> [設定]画面の左ペインにある[ビルド、実行、デプロイ] - [ツールチェーン]を選択する。<br> [設定]画面の右ペインにある[+]アイコンを選択して、[システム]を選択する。<br> <br> * ツールチェーンの設定項目 ** [名前] **: 任意の名前を入力する。 ** [CMake:] **: PinePhone向けQtライブラリのビルドに使用したCMakeファイルのパスを入力する。 ** [ビルドツール:] **: PinePhone向けQtライブラリのビルドに使用したNinjaファイルのパスを入力する。 ** [C コンパイラー:] **: PinePhone向けQtライブラリのビルドに使用したGCCファイルのパスを入力する。 **: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc ** [C++ コンパイラー:] **: PinePhone向けQtライブラリのビルドに使用したG++ファイルのパスを入力する。 **: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-g++ ** [デバッガー:] **: GCCツールチェーンのGDBファイルのパスを入力する。 **: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gdb <br> [設定]画面の右ペイン下部にある[適用]ボタンを押下する。<br> <br> ==== CMakeの設定 ==== [ファイル]メニューバー - [設定]を選択する。<br> [設定]画面の左ペインにある[ビルド、実行、デプロイ] - [CMake]を選択する。<br> [設定]画面の右ペインにある[+]アイコンを選択する。<br> <br> * CMakeの設定項目 ** [名前] **: 任意の名前を入力する。 ** [ビルドタイプ:]プルダウン **: [Debug]または[Release]を選択する。 ** [ツールチェーン:]プルダウン **: 上記で設定したツールチェーン名を選択する。 ** [ジェネレーター:]プルダウン **: [デフォルトを使用する]を選択する。 **: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc ** [環境:]<br>[環境:]のテキストアイコンを選択して、[環境設定]画面を開く。<br>画面右上の[+]ボタンを押下して、各環境変数を設定する。 *** CMAKE_C_COMPILER ***: PinePhone向けQtライブラリのビルドに使用したGCCファイルのパスを入力する。 ***: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-gcc *** CMAKE_CXX_COMPILER ***: PinePhone向けQtライブラリのビルドに使用したG++ファイルのパスを入力する。 ***: 例: /<GCCツールチェーンのインストールディレクトリ>/bin/aarch64-linux-gnu-g++ *** CMAKE_PREFIX_PATH ***: PinePhone向けQtライブラリのインストールディレクトリのパスを入力する。 ***: 例: <PinePhone向けQtライブラリのインストールディレクトリ> *** CMAKE_TOOLCHAIN_FILE ***: PinePhone向けQtライブラリのインストールディレクトリにあるビルド向けツールチェーンファイルのパスを入力する。 ***: 例: /<PinePhone向けQtライブラリのインストールディレクトリ>/lib/cmake/Qt5/qt.toolchain.cmake *** QT_QMAKE_EXECUTABLE ***: PinePhone向けQtライブラリのインストールディレクトリにあるqmakeファイルのパスを入力する。 ***: 例: /<PinePhone向けQtライブラリのインストールディレクトリ>/bin/qmake-host <br> [設定]画面の右ペイン下部にある[適用]ボタンを押下する。<br> <br> ==== SSHの設定 ==== [ファイル]メニューバー - [設定]を選択する。<br> [設定]画面の左ペインにある[ツール] - [SSH 構成]を選択する。<br> [設定]画面の右ペインにある[+]アイコンを選択する。<br> <br> * SSH構成の設定項目 ** [ホスト:] **: PinePhoneのIPアドレスまたはホスト名を入力する。 ** [ユーザー名:] **: PinePhoneのユーザ名を入力する。 ** [認証タイプ:]プルダウン **: [パスワード]または[キーペア]を選択する。 ** [秘密鍵ファイル:] (キーペアを選択した場合) **: 秘密鍵ファイルのパスを入力する。 ** [パスフレーズ:] (キーペアを選択した場合、かつ、パスフレーズを設定した場合) **: 秘密鍵のパスフレーズを入力する。 ** [構成ファイル ~/.ssh/configの構文解析]チェックボックス **: 任意 <br> [接続テスト]ボタンを押下して、PinePhoneにSSH接続する。<br> <br> [設定]画面の右ペイン右下にある[適用]ボタンを押下する。<br> <br> ==== 各プロジェクトの設定 ==== CLionを起動して、[ファイル]メニューバー - [新規] - [プロジェクト...]を選択する。<br> [新規プロジェクト]画面から、[Qt Console 実行可能ファイル]または[Qt Widgets 実行可能ファイル]を選択する。<br> <br> 新規プロジェクトの作成後、[実行]メニューバー - [実行構成の編集...]を選択する。<br> [実行/デバッグ構成]画面が開くので、画面左上にある[+]ボタンを押下して、[リモート GDB サーバー]を選択する。<br> 画面左ペインに[リモート GDB サーバー]が追加される。<br> 画面左ペインに[リモート GDB サーバー]を選択して、各種設定を行う。<br> <br> * [ターゲット:]プルダウン *: プロジェクト名を選択する。 * [実行可能ファイル:]プルダウン *: プロジェクト名を選択する。 * [GDB:]プルダウン *: 上記のツールチェーンの作成セクションで設定したGDBを選択する。 * [資格情報:]プルダウン *: 上記のSSHの設定セクションで設定したSSHを選択する。 * [実行可能ファイル...]ラジオボタン *: 任意 * [アップロードパス:] *: 実行可能バイナリが配置されるPinePhone上のディレクトリを入力する。 *: 例: /home/<PinePhoneのユーザ名>/CLion/Sample1/debug * ['target remote' ...] *: 自動的に入力される。 *: 例: <IPアドレスまたはホスト名>:1234 * [GDB サーバー引数:] *: Qt WidgetsまたはQMLを使用するプロジェクトの場合、デバッグまたは実行時において、実行可能バイナリに<code>-platform wayland</code>オプションを付加する必要がある。 *: 例: <code>:<GDBサーバのポート番号 例: 1234> /<実行可能バイナリが配置されるPinePhone上のディレクトリ>/debug/<実行バイナリのファイル名> -platform wayland</code> <br> 次に、[拡張 GDB サーバーオプション]項目を設定する。<br> この設定は、PinePhoneにアップロードしたQtライブラリにおいて、デバッグまたは実行に関する設定を行う。<br> * [作業ディレクトリ:] *: 何も入力しない。 * [環境変数:]<br>[環境変数:]項目の右にあるテキストアイコンを選択する。<br>[環境変数]画面が開くので、画面左上にある[+]ボタンを押下して各種設定を入力する。 ** DISPLAY **: :0 ** QT_QPA_PLATFORMTHEME **: Qt 5の場合 : qt5ct ** PATH **: PinePhone上のQt5ライブラリをアップロードしたbinディレクトリのパスを入力する。 **: 例: /<Qt5ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games ** LD_LIBRARY_PATH **: PinePhone上のQt5ライブラリをアップロードしたlibディレクトリのパスを入力する。 **: 例: /<Qt5ライブラリをアップロードしたディレクトリ>/lib:/<Qt5ライブラリをアップロードしたディレクトリ>/plugins/qmltooling ** QT_PLUGIN_PATH **: /<Qt5ライブラリをアップロードしたディレクトリ>/plugins ** QT_QPA_PLATFORM_PLUGIN_PATH **: /<Qt5ライブラリをアップロードしたディレクトリ>/plugins/platforms ** QML_IMPORT_PATH **: /<Qt5ライブラリをアップロードしたディレクトリ>/qml ** QML2_IMPORT_PATH **: /<Qt5ライブラリをアップロードしたディレクトリ>/qml ** QT_DEBUG_PLUGINS **: 0または1を入力する。 ** LANG **: 日本語を設定する場合は、<code>ja_JP.UTF-8</code>と入力する。 <br> また、[拡張 GDB サーバーオプション]項目の設定は、プロジェクトディレクトリ内の<u>.idea/runConfigurations/<プロジェクト名>.xml</u>ファイルに保存されている。<br> このファイルを直接編集することにより、上記の設定を行うこともできる。<br> <br> CLion上で上記の設定を行うには煩雑なため、ファイルを直接編集することを推奨する。<br> cd <プロジェクトディレクトリ> vi .idea/runConfigurations/<プロジェクト名>.xml <br> <syntaxhighlight lang="xml"> <!-- .idea/runConfigurations/<プロジェクト名>.xml --> <component name="ProjectRunConfigurationManager"> <configuration ...略> <envs> <env name="DISPLAY" value=":0" /> <env name="LANG" value="ja_JP.UTF-8" /> <env name="QML2_IMPORT_PATH" value="/<Qt5ライブラリをアップロードしたディレクトリ>/qml" /> <env name="QML_IMPORT_PATH" value="/<Qt5ライブラリをアップロードしたディレクトリ>/qml" /> <env name="QT_DEBUG_PLUGINS" value="0" /> <env name="QT_PLUGIN_PATH" value="/<Qt5ライブラリをアップロードしたディレクトリ>/plugins" /> <env name="QT_QPA_PLATFORM_PLUGIN_PATH" value="/<Qt5ライブラリをアップロードしたディレクトリ>/plugins/platforms" /> <env name="QT_QPA_PLATFORMTHEME" value="Qt5ct" /> <env name="LD_LIBRARY_PATH" value="/<Qt5ライブラリをアップロードしたディレクトリ>/lib:/<Qt5ライブラリをアップロードしたディレクトリ>/plugins/qmltooling" /> <env name="PATH" value="/<Qt5ライブラリをアップロードしたディレクトリ>/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" /> </envs> <!-- ...略 --> </configuration> </component> </syntaxhighlight> <br> ==== GDBの設定 ==== プロジェクトにデバッグのためのより多くの設定が必要な場合、デバッガの初期化ファイル (GDBの場合は.gdbinit、LLDBの場合は.lldbinit) をプロジェクトディレクトリ直下に作成する。<br> このファイルは、他のプロジェクトと一緒にVCSで共有することもできる。<br> <br> 一般的に、GDB / LLDBは起動時に初期化ファイルを一定の順序で読み込む。<br> まず、デバッガはユーザのホームディレクトリにある初期化ファイルを探して、次に、現在のプロジェクトディレクトリ直下にある初期化ファイルを探す。<br> <br> ただし、デフォルトの設定では、セキュリティ上の理由から、プロジェクト固有の初期化ファイルからのコマンドは実行されない。<br> そのため、ホームディレクトリの初期化ファイルである<u>~/.gdbinit</u>ファイルまたは<u>~/.lldbinit</u>ファイルを、以下に示すように編集する。<br> vi ~/.gdbinit または vi ~/.lldbinit <br> <syntaxhighlight lang="sh"> # ~/.gdbinitファイル または ~/.lldbinitファイル set auto-load safe-path / # または set auto-load local-gdbinit on add-auto-load-safe-path / </syntaxhighlight> <br> 次に、プロジェクトディレクトリの直下に.gdbinitファイルを作成する。<br> cd <プロジェクトディレクトリ> vi .gdbinit または vi .lldbinit <br> <syntaxhighlight lang="sh"> # /<プロジェクトディレクトリ>/.gdbinitファイル または /<プロジェクトディレクトリ>/.lldbinitファイル set sysroot <PinePhoneのシステムルートディレクトリ> </syntaxhighlight> <br> CLionを起動して、任意のプロジェクトを開く。<br> CLionのメイン画面左にあるプロジェクトに.gdbinitファイル、または、.lldbinitファイルが追加されているかどうかを確認する。<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__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:PinePhone]][[カテゴリ:Qt]]
インストール - Qt5 PinePhone
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse