---
title: 1.3 クロス開発環境の作成
description: "## 1.3 クロス開発環境の作成 エッジゲートウェイのアプリケーションをクロス…"
url: "https://manual.amnimo.com/docs/dev-environment-dev/1-3-dev/"
updated: "2026-11-09"
category: デベロッパーズマニュアル / 第1章　エッジゲートウェイの開発環境
---

# 1.3 クロス開発環境の作成

## 1.3 クロス開発環境の作成

エッジゲートウェイのアプリケーションをクロス開発環境で開発する方法について説明します。

### 1.3.1 PC環境の準備

#### aptパッケージのインストール

PC側のUbuntu環境で、aptパッケージリストの更新とアップグレードをして、以下のaptパッケージをインストールしてください。

**実行環境**: ホストマシン（PC）

```
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential crossbuild-essential-arm64 device-tree-compiler libssl-dev gcc-arm-linux-gnueabi file tree
```

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: 本節のサンプルのビルドに必要なのは、build-essential、crossbuild-essential-arm64、file、tree です。device-tree-compiler と libssl-dev は、『[3.11 Linuxカーネルのビルド方法](/docs/utilization-dev/3-11-dev/#311-linux%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E6%96%B9%E6%B3%95)』でカーネルをビルドする場合に使います。

#### ツールチェインのバージョン確認

ツールチェインのバージョンを確認してください。

**実行環境**: ホストマシン（PC）

```
$ aarch64-linux-gnu-gcc --version
aarch64-linux-gnu-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 PURPOSE.
```

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: 実行例は Ubuntu 18.04 LTS の出力です。Ubuntu 24.04 LTS では gcc 13 系の版が表示されます（『[1.1.2 ソフトウェア仕様](/docs/dev-environment-dev/1-1-dev/#112-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E4%BB%95%E6%A7%98)』の開発ツールチェイン）。ツールチェインのバージョンは、ユーザー環境のアップデートに伴って更新される可能性があります。

#### ツールチェインコマンド一覧

| 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 |
| cpp-aarch64-linux-gnu | aarch64-linux-gnu-cpp |
| g++-aarch64-linux-gnu | aarch64-linux-gnu-g++ |
| gcc-aarch64-linux-gnu | aarch64-linux-gnu-gcc |
|  | aarch64-linux-gnu-gcc-ar |
|  | aarch64-linux-gnu-gcc-nm |
|  | aarch64-linux-gnu-gcc-ranlib |
|  | aarch64-linux-gnu-gcov |
|  | aarch64-linux-gnu-gcov-dump |
|  | aarch64-linux-gnu-gcov-tool |

### 1.3.2 クロスビルドの実行

サンプルコードを用いてクロスビルドを実行する手順について説明します。

#### サンプルコード（main.c、Makefile）の作成

以下に示すのは、10秒ごとに文字列を出力し続けるプログラムのソースコードです。

##### main.c

**実行環境**: ホストマシン（PC）

```
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    while(1){
    printf("Hello World!\n");
    sleep(10);
  }
}
```

##### Makefile

```
CC = aarch64-linux-gnu-gcc
STRIP = aarch64-linux-gnu-strip
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 --strip-program=$(STRIP) $(PROG) $(DESTDIR)/usr/sbin/$(PROG)
```

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: クロス開発環境では、`make install` でホストマシン（PC）の `/usr/sbin` にインストールしても意味がありません。`install` ターゲットは、`make install DESTDIR=$HOME/staging` のようにステージング用のディレクトリを指定して使います。ストリップには、aarch64 用の `aarch64-linux-gnu-strip` を使います（ホストマシンの `strip` は aarch64 の実行ファイルを処理できません）。エッジゲートウェイへは、次の「実行ファイル転送」の手順で転送します。

ディレクトリ構造とファイル配置を以下に示します。

```
~/sample$ tree
.
├── main.c
└── Makefile
```

#### ビルド

**実行環境**: ホストマシン（PC）

```
~/sample$ make all
```

#### ビルド結果の実行ファイルの種別の確認

**実行環境**: ホストマシン（PC）

```
~/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]=1e9a9503efe79366a8c4f51bba5d20cc65f9a7fe, not stripped
```

#### 実行ファイル転送

生成された実行ファイルamnimo-sample-appを、scpでエッジゲートウェイに送信します。

**実行環境**: ホストマシン（PC）

```
~/sample$ scp amnimo-sample-app admin@192.168.0.254:/tmp/
The authenticity of host '192.168.0.254 (192.168.0.254)' can't be established.
ECDSA key fingerprint is SHA256:AJ0j48/CzTC8mETZnRjwHyGegbpq00vQOg6/8sB9npg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.254' (ECDSA) to the list of known hosts.
admin@192.168.0.254's password:
amnimo-sample-app                                         100% 9080     3.0MB/s   00:00
```

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: fingerprint の確認（`The authenticity of host` から `Warning: Permanently added` までの行）は、以下の場合に出力されます。
>
>
>
> - 初回のsshログイン時
> - 初回のscpによるデータ送受信時

#### 実行ファイルの実行

エッジゲートウェイにログインし、実行ファイルを実行します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ /tmp/amnimo-sample-app
Hello World!
Hello World!
…
```
