ユーザ用ツール

サイト用ツール


クロスコンパイル環境構築メモ_arm_arm64_on_x86_64

クロスコンパイル環境構築メモ 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

クロスコンパイル環境構築メモ_arm_arm64_on_x86_64.txt · 最終更新: by admin