クロスコンパイル環境構築メモ ARM/ARM64 on X86_64
趣旨
シングルボードコンピューターやAndroid TV Box上で、ソースからビルドする必要が発生した場合、
CPU速度, CPUコア数, メモリー容量, 内蔵ディスクのアクセス速度等に起因して、ビルド完了までに時間がかかる。
そこで速い端末で「make」まで完了させ、TVBoxで「make install」すれば良いんじゃね?と思い、
初の試みなので、ちゃんと動くかどうか分からないが、とりあえず、メモとして残しておく。
環境
〇 ビルド環境
VMware WorkStation
- Debian GNU/Linux 12 (bookworm) X86_64
- Kernel 6.1.0-30
- VCPU(i5-11400F@2.6GHz): 4 / MEM: 4GB / HDD: 20GB
〇 インストール先
Android TV Box A95X F3 Air
- Armbian 25.2.1 [ Debian 12 (bookworm)] aarch64
- Kernel 6.6.73
- CPU(Cortex-A55@2.0GHz): 4 / MEM: 4GB / NVMe: 32GB
構築指針
〇対象ソフトウェア
YACReader 9.15.0
・(YACReader/YACReaderLibrary/YACReaderLibraryServer) をソースよりビルドできるようする
・アーキテクチャーは、(念のため) X86_64ベース・ARM64ベース 両方 ビルド出来るようにしたい
・極力手順を簡略化する為に、上記ソフトウェアでは必要としないパッケージも、依存関係で入るものはインストールするものとする
構築手順
〇 ベースOS
Software Selectionでは「SSH Server」のみチェック
〇 追加パッケージ(ベース)
※ 最終的にARM64でビルド(クロスコンパイル)出来れば良いのだが、勢いでgcc, g++はARM(32bit)も入れておいた
# apt -y install gcc g++ make autoconf automake libtool flex bison # apt -y install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu # apt -y install g++-arm-linux-gnueabihf g++-aarch64-linux-gnu qemu-user-binfmt
〇 追加パッケージ(YACReader用)
# dpkg --add-architecture arm64 # apt update # apt -y install qttools5-dev-tools # apt -y install qtdeclarative5-dev qtdeclarative5-dev:arm64 # apt -y install libpoppler-qt5-dev libpoppler-qt5-dev:arm64 # apt -y install libqt5svg5-dev libqt5svg5-dev:arm64 # apt -y install qtquickcontrols2-5-dev qtquickcontrols2-5-dev:arm64 # apt -y install qtmultimedia5-dev qtmultimedia5-dev:arm64 # apt -y install libunarr-dev libunarr-dev:arm64
ビルド手順
ARM64
$ cd $ rm -fr yacreader-9.15.0 $ tar Jxfv yacreader-9.15.0-src.tar.xz $ cd yacreader-9.15.0 $ /usr/lib/aarch64-linux-gnu/qt5/bin/qmake YACReader.pro $ make
ビルドしたソースをtarで固める。
$ cd $ tar zcfv yacreader-9.15.0_ARM64_20250216.tar.gz ./yacreader-9.15.0
X86_64
$ cd $ rm -fr yacreader-9.15.0 $ tar Jxfv yacreader-9.15.0-src.tar.xz $ cd yacreader-9.15.0 $ /usr/bin/qmake YACReader.pro $ make
ビルドしたソースをtarで固める。
$ cd $ tar zcfv yacreader-9.15.0_X64_20250216.tar.gz ./yacreader-9.15.0
インストール
ARM64
ARM64テスト環境(端末)が無い為、以下必要パッケージ以外にもインストールされている。
よって、必要パッケージが不足している可能性もあり。
# apt -y install qtdeclarative5-dev # apt -y install libpoppler-qt5-dev # apt -y install libunarr-dev # apt -y install qtmultimedia5-dev # apt -y install libqt5svg5-dev # apt -y install qtquickcontrols2-5-dev $ cd $ tar zxfv yacreader-9.15.0_ARM64_20250216.tar.gz $ cd yacreader-9.15.0 # make install
X86_64
# apt -y install qtdeclarative5-dev # apt -y install libpoppler-qt5-dev # apt -y install libunarr-dev # apt -y install qtmultimedia5-dev # apt -y install libqt5svg5-dev # apt -y install qtquickcontrols2-5-dev $ cd $ tar zxfv yacreader-9.15.0_X64_20250216.tar.gz $ cd yacreader-9.15.0 # make install
ビルド時間
timeコマンドにて比較。
かなりの時間短縮が見込める結果となった。
Android TV Box A95X F3 Air
$ time make
real 162m47.373s
user 155m0.925s
sys 8m14.085s
VMware GuestOS (X86_64)にて ARM64 クロスコンパイル
$ time make
real 15m22.563s
user 13m57.859s
sys 1m21.687s