#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