1.4 ネイティブ開発環境 #
エッジゲートウェイのアプリケーションをネイティブ開発環境で開発する方法について説明します。
1.4.1 エッジゲートウェイの準備 #
インストール済みツールチェイン
工場出荷時のエッジゲートウェイには、以下のツールチェインが実装されています。
| aptパッケージ | コマンド |
|---|---|
| binutils-aarch64-linux-gnu | aarch64-linux-gnu-addr2line |
| aarch64-linux-gnu-ar | |
| aarch64-linux-gnu-as | |
| aarch64-linux-gnu-c++filt | |
| aarch64-linux-gnu-dwp | |
| aarch64-linux-gnu-elfedit | |
| aarch64-linux-gnu-gprof | |
| aarch64-linux-gnu-ld | |
| aarch64-linux-gnu-ld.bfd | |
| aarch64-linux-gnu-ld.gold | |
| aarch64-linux-gnu-nm | |
| aarch64-linux-gnu-objcopy | |
| aarch64-linux-gnu-objdump | |
| aarch64-linux-gnu-ranlib | |
| aarch64-linux-gnu-readelf | |
| aarch64-linux-gnu-size | |
| aarch64-linux-gnu-strings | |
| aarch64-linux-gnu-strip |
補足: 工場出荷時のエッジゲートウェイには、コンパイラー(gcc)と make は入っていません(AG10 FW 3.8.1 で確認)。次の手順でインストールしてください。
ビルドに必要なaptパッケージのインストール
エッジゲートウェイにログインし、エッジゲートウェイ側のUbuntu環境において、aptパッケージリストの更新とアップグレードをして、以下のaptパッケージをインストールしてください。
なお、事前に、『エッジゲートウェイシリーズCLIユーザーズマニュアル』の『2.5 パッケージリポジトリの操作』を確認してください。
実行環境: エッジゲートウェイ
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential file tree
$ sudo apt install cmake ←CMakeによるマルチプラットフォームビルドを実施する場合
補足: apt updateする際は、アムニモのaptサーバーにアクセスするため、パッケージリポジトリの認証情報を追加する必要があります。aptサーバーのアカウントとパスワードについては、弊社サポートに別途ご連絡ください。
設定方法は、『エッジゲートウェイシリーズCLIユーザーズマニュアル』の『2.5.1 パッケージリポジトリの認証情報を追加する』をご確認ください。
認証情報が正しくない場合、
sudo apt updateの出力に401 Unauthorizedが表示され、アムニモのリポジトリのパッケージを取得できません。apt updateの出力にエラーがないことを確認してから、インストールに進んでください。
ツールチェインのバージョン確認
ツールチェインのバージョンを確認します。
実行環境: エッジゲートウェイ
admin@amnimo:~$ gcc --version
gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS
補足: 実行例はファームウェア Ver.1(Ubuntu 18.04 LTS)の出力です。ファームウェア Ver.3(Ubuntu 24.04 LTS)では gcc 13 系の版が表示されます(『1.1.2 ソフトウェア仕様』)。
1.4.2 ネイティブビルドの実行 #
サンプルコードを用いてネイティブビルドを実行する手順について説明します。
サンプルコード(main.c、Makefile)の作成
『1.3.2 クロスビルドの実行』のサンプルコードを利用します。
main.c
実行環境: エッジゲートウェイ
#include <stdio.h>
#include <unistd.h>
int main(void)
{
while(1){
printf("Hello World!\n");
sleep(10);
}
}
Makefile
CC = gcc
CFLAGS = -O3 -Wall
DESTDIR := /
LIBS =
OBJS = main.o
PROG = amnimo-sample-app
all: $(PROG)
$(PROG): $(OBJS)
$(CC) $(OBJS) $(LIBS) -o $(PROG)
clean:
rm -f *.o $(PROG)
install: $(PROG)
install -D -s $(PROG) $(DESTDIR)/usr/sbin/$(PROG)
ディレクトリ構造とファイル配置を以下に示します。
admin@amnimo:~/sample$ tree
.
├── main.c
└── Makefile
ネイティブビルドの実行
実行環境: エッジゲートウェイ
admin@amnimo:~/sample$ make all
ビルド結果の実行ファイルの種別の確認
実行環境: エッジゲートウェイ
admin@amnimo:~/sample$ file amnimo-sample-app
amnimo-sample-app: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=1436db4cc909f72d8565e5f8d14a2b4be47c0515, not stripped
実行ファイルの実行
ビルドしたディレクトリで、実行ファイルを実行します。
実行環境: エッジゲートウェイ
admin@amnimo:~/sample$ ./amnimo-sample-app
Hello World!
Hello World!
…

補足: 工場出荷時のエッジゲートウェイには、コンパイラー(gcc)と make は入っていません(AG10 FW 3.8.1 で確認)。次の手順でインストールしてください。