Momoをarm64のLinuxで(無理矢理)ビルドする

6213 ワード

Oracle Cloudでarm64のインスタンスが使えるようになったので、これでmomoのビルドができないか色々試しました。結果としてビルドはできましたが、かなり無理矢理です。momoのビルドはx86_64のLinuxでやるのが正当な方法です。

とりあえずビルドしてみた

Oracle Cloudのarm64のインスタンス上で普通にmomoのビルドをしてみました。

$ ./build.sh ubuntu-18.04_armv8_jetson_nano

boostのビルドのところでエラーになりました。
エラーの理由は「clang++が無い」
実際にはclang++の実行ファイルはあるのですが、x86_64用のバイナリでした。
C++コンパイラツールは別リポジトリでlibwebrtc.aをビルドしたのと同じものをダウンロードしてきています。
そちらがx86_64の環境なので、x86_64の実行ファイルなわけです。これはarm64では動かせない。
いったんはあきらめました。

arm64 Macでのビルド設定を発見

build.sh の中にこんなコードを見つけました。

 if [ "`uname -sm`" = "Darwin arm64" ]; then
   # M1 Mac の場合は --platform を指定する
   DOCKER_PLATFORM="--platform=linux/amd64"
 fi

arm64 Macでは--platform=linux/amd64 をつけてDockerコンテナまるごとをエミュレーションで動かすということをしているのか。
だったら、同じようにまるごとエミュレーションして動かしてみようということに。

クロスでDockerを動かすための修正

昔書いたこの記事のようにやれば、クロスでDockerを動かせるはず