採用情報

お問い合わせ

BLOG

EMLinux

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 をお試しください。

EMLinux無償評価版ダウンロード申し込み

関連リンク
連載リンク
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime