#author("2025-04-12T00:37:27+09:00","","")
#author("2025-04-12T00:57:29+09:00","","")
* Linux cross-compile 環境 (Docker + ct-ng) [#n082fdad]

** 下記ファイルをダウンロードし、同じディレクトリに置く。 [#zf59362f]
&ref(Dockerfile);
&ref(docker-compose.yml);
以下、Raspbbery Pi 3 用の環境構築方法を記載します。
他のターゲットについては、下部参照ください。

** Docker イメージ作成 [#aa174717]
※事前に docker, docker-compose をインストールのこと。
 
 # crosstool-ng のイメージを作成
 # 700MB 程度のイメージが作成されます。
** 事前準備 [#j9661ae6]
docker, docker-compose をインストールしておくこと。

** ビルド用の yml, Dockerfile をダウンロードする。 [#b7ba6488]
下記、実行する。
 git clone https://ehobby.jp/gitbucket/git/kei-n/cross-compiler.git

** Docker イメージ作成 [#u6ca928b]

*** crosstool-ng のイメージを作成 [#d593aba2]
次のコマンドを実行する。~
約 700MB 程度のイメージが作成されます。
 docker-compose build crosstool-ng

 # aarch64-rpi3-linux-gnu コンパイラが入ったイメージを作成
 # ビルドに時間がかかり、15GB 程度のイメージが作成されます。
*** aarch64-rpi3-linux-gnu のクロスコンパイラが入ったイメージを作成 [#gf4ebce3]
次のコマンドを実行する。~
約 15GB 程度のイメージが作成されます。ビルドに時間がかかります。(マシンスペックにもよるが 1Hr 程度)
 docker-compose build aarch64-rpi3-linux-gnu

** コンテナ起動 [#sd389e13]
* 使い方 [#mb2465f3]

** コンテナ起動 [#n037e80f]
次のコマンドで aarch64-rpi3-linux-gnu のコンテナを起動します。
 docker-compose up -d
 # aarch64-rpi3-linux-gnu のコンテナが起動します。

** ビルド [#r6a9359a]
- ビルド対象のソースを target 配下に格納する。(コンテナ内の target になります)
- コンテナにログインし、ビルドする。
 docker exec -it rpi-build_aarch64-rpi3-linux-gnu_1 /bin/bash
- ビルド対象のソースを target 配下に格納します。(コンテナ内の target になります)
- 次のコマンドでコンテナにログインし、ビルドします。
 # <CONTAINER ID> は、docker ps により出力される aarch64-rpi3-linux-gnu の CONTAINER ID。
 docker exec -it <CONTAINER ID> /bin/bash
次のコマンドでも可
 docker exec -it `docker ps | sed -n -e "s/^\(.*\)\s\+aarch64-rpi3-linux-gnu.*/\1/p"` /bin/bash


----
** aarch64-rpi3-linux-gnu のイメージ作成に失敗する場合 [#pe1828b3]
下記にて、crosstool-ng のコンテナに入る。
 docker-compose up -d crosstool-ng
 docker exec -it `docker ps | sed -n -e "s/^\(.*\)\s\+crosstool-ng.*/\1/p"` /bin/bash
次のコマンドでビルドできるか確認ください。
※エラー等あれば、必要に応じて、aarch64-rpi3-linux-gnu の Dockerfile を修正し再ビルドください。
 tg-ng aarch64-rpi3-linux-gnu
 tg-ng build

** 別のクロスコンパイル環境の Docker Image を作成したい場合 [#cbc48408]
aarch64-rpi3-linux-gnu/Dockerfile を参考に修正すればよいですが、
まずは、crosstool-ng のコンテナで、事前に必要なライブラリ等確認した方が良いかもしれません。

下記にて、crosstool-ng のコンテナに入る。
 docker-compose up -d crosstool-ng
 docker exec -it `docker ps | sed -n -e "s/^\(.*\)\s\+crosstool-ng.*/\1/p"` /bin/bash
次のコマンドで、ターゲットを探す。
 ct-ng list-samples
次のコマンドで、ターゲットを設定する。
 ct-ng <target>
 # 例)
 ct-ng aarch64-rpi4-linux-gnu
次のコマンドでビルドする
 ct-ng build
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS