2025 年 04 月 03 日
第 7 話:組込み Linux「EMLinux」の SDK をビルドしてみよう
はじめに
これまでの記事では、EMLinux で OS のビルドを行ってきましたが、EMLinux では SDK (Software Development Kit) をビルドすることもできます。
本記事では EMLinux 3.1-202407 より利用可能となった、コンテナ版 SDK をビルドしてみたいと思います。
ビルド環境の準備
本記事では、Ubuntu Server 22.04 にてコンテナ版 SDK のビルドを行いました。
また、Ubuntu Server 22.04 に、以下のパッケージをインストールしました。
sudo apt install -y docker.io docker-compose-v2 qemu-user-static
加えて、以下の記事を参考に docker コマンドをパスワード無しで実行できるように設定しました。インターネット接続のためにプロキシサーバを使用している場合、プロキシサーバの設定も行ってください。
コンテナ版 SDK のビルド
本記事では、EMLinux の無償評価版の EMLinux 3.2-202503 を用いました。
ビルド環境として用意した Ubuntu Server 22.04 の任意のディレクトリに EMLinux_3.2-202503.zip をコピーし、展開してください。
その後、展開したディレクトリに移動してください。本記事では、以下のディレクトリに展開しました。
cd /home/emlinux/EMLinux_3.2-202503/source/emlinux-3.2-202503/
EMLinux のビルド用コンテナを起動するために、以下のディレクトリに移動してください。
cd repos/meta-emlinux/docker
EMLinux のビルド用コンテナを起動してください。
./run.sh
EMLinux のビルド用コンテナにログイン後、work ディレクトリに以下のファイルが保存されています。
build@37a3c680506c:~/work$ ls -lh total 8.0K drwxr-xr-x 9 build build 4.0K Mar 11 09:34 repos lrwxrwxrwx 1 build build 40 Mar 11 09:34 setup-emlinux -> repos/meta-emlinux/scripts/setup-emlinux drwxr-xr-x 2 build build 4.0K Mar 11 09:34 setup-hooks
work ディレクトリにて、以下のコマンドを実行してください。
build@37a3c680506c:~/work$ source setup-emlinux build
上記実行後、build ディレクトリに自動で移動します。
build@37a3c680506c:~/work/build$
conf/local.conf ファイルの末尾に以下を追記してください。
MACHINE = "qemu-arm64" BB_ENV_PASSTHROUGH_ADDITIONS="$BB_ENV_EXTRAWHITE SDK_FORMATS" SDK_FORMATS="docker-archive"
以下のコマンドを実行し、SDK をビルドしてください。
bitbake emlinux-image-base -c cleanall bitbake emlinux-image-base -c populate_sdk
ビルド完了後、exit コマンドでコンテナからログアウトしてください。
build@37a3c680506c:~/work/build$ exit
コンテナ版 SDK のセットアップ
ビルド生成物が保存されているディレクトリに移動してください。
cd /home/emlinux/EMLinux_3.2-202503/source/emlinux-3.2-202503/build/tmp/deploy/images/qemu-arm64/emlinux-image-base-sdk-docker-archive/
以下の 3 つのファイルが作成されていることを確認してください。
$ ls -F | grep -v / Dockerfile docker-compose.yml emlinux-image-base-sdk-emlinux-bookworm-arm64.docker-archive
docker load コマンドでコンテナイメージをロードしてください。
docker load -i emlinux-image-base-sdk-emlinux-bookworm-arm64.docker-archive
上記コマンド実行後、emlinux-image-base-sdk-emlinux-bookworm-arm64 イメージが登録されています。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE emlinux-image-base-sdk-emlinux-bookworm-arm64 1.0-r0 98f5b99d0c65 7 hours ago 791MB (後略)
export コマンドで UID 変数をエクスポートしてください。
export UID
SDK イメージを作成してください。
docker compose build
上記コマンド実行後、emlinux3-sdk イメージが登録されています。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE emlinux3-sdk latest 3cecb7765be4 5 seconds ago 791MB (後略)
以下のコマンドを実行し、コンテナにログインしてください。
docker compose run --rm emlinux3-sdk
以下のコマンドを実行してコンパイルの動作を確認してみます。
echo -e '#include\nint main(void){printf("Hello world\\n");return 0;}' | \ ${CC} -Wall -x c -; /usr/bin/file a.out
上記を実行すると、以下のような出力が表示され、ARM64 版のバイナリファイル ( プログラム ) が作成されたことが確認できます。
/tmp/testfile: ELF 64-bit LSB pie executable, ARM aarch64, (後略)
さいごに
本記事では、EMLinux のコンテナ版 SDK をビルドし、SDK にて ARM64 版のバイナリファイルを作成できることを確認しました。
コンテナ版 SDK では、docker.io, docker-compose-v2, qemu-user-static の 3 つのパッケージをインストールするだけで、SDK をビルドおよび利用することができます。本記事では、Ubuntu Server 22.04 を使いましたが、上記 3 つのパッケージ (Linux ディストリビューションによってはパッケージ名が異なる場合があります ) をインストールすることで、お好きな Linux ディストリビューションで SDK を利用することが可能です。
コンテナ版 SDK についても、もちろん無償評価版にて利用することが可能です。ぜひ、「EMLinux 無償評価版」で EMLinux の SDK をお試しください。