フューチャー技術ブログ

極小LinuxマシンでSwiftを動かそうとしてみた

秋のブログ週間連載の7本目です。

初めに

今回ターゲットとした極小Linuxマシンは、M5Stack UnitV2になります。

こちらのマシンは、ARM Cortex-A7デュアルコア1.2GHz、128MBメモリ、512MB内蔵Flash、microSDスロット、Full HDカメラ、Wi-Fi、冷却ファンを搭載し、OSはLinuxがプリインストールされていますが、非常にコンパクトで1万円弱で購入できます。

Python、Jupyter Notebookはプリインストールされているので、あえて、他の手段を試す必然性は全くないのですが、Swiftのインストールを試してみました。

Swiftのインストール手順

まずは、buildSwiftOn ARMを見つけたのですが、swiftコマンドのサイズがほぼメインメモリの容量と同じ、かつ、導入時のサイズが約650MBのため、microSDをマウントしたり色々ファイルシステムをいじらないといけないので断念。

そこで、ターゲット上でビルド環境を整えるのは諦め、クロスコンパイル環境を探すことに。
Swift Cross Compilation Toolchainsを見つけるも、5.3.3からはARM32のサポートがなくなると。。

そもそも、Swiftは困難なようなので代わりにRustの環境を調べてみる方針へ変更。

手順は、まず、rustupを開発環境であるMacへ導入。

brew install rustup
brew install arm-linux-gnueabihf-binutils

ビルド時にターゲットとしてarmv7-unknown-linux-gnueabihfを指定するも、エラーでうまくいかず、ここの記述を参考に、ターゲットをarmv7-unknown-linux-musleabihfへ変更することでようやくビルドがエラーなく実行できるようになりました。

.cargo/config
[target.armv7-unknown-linux-musleabihf]
linker = "arm-linux-gnueabihf-ld"
rustup target add armv7-unknown-linux-musleabihf
cargo init
cargo build --target armv7-unknown-linux-musleabihf

環境は出来上がったので次回はRustでカメラを使ったアプリを組みたいと思います。

秋のブログ週間連載の7本目でした。