私は OpenWrt のコンパイルプロセスはいつも血と涙に満ちています。
OpenWrt のバージョンは断片化しており、私のコンパイル環境も断片化しています。x86 のソフトルーターは VMware の仮想マシン上で動作しています。mt798x のハードルーターは仮想マシンと Ubuntu2202-WSL2 の両方で動作しています。
私の Mac は大文字と小文字を区別しない設定なので、Mac 上でのコンパイルは行ったことがありません。今日は思いつきで、速さを体験してみることにしました。
私は OrbStack が大好きで、Docker だけでなく、仮想マシンの設定も心に響きます。arm64/amd64 の完全な Linux 環境をワンクリックで生成することができますし、amd64 では自動的に Rosette にマウントされます(広告ですが)。
Ubuntu 2002 arm のマシンを新規作成します。インストールします。
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache clang clangd cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext \
git gperf haveged help2man intltool libelf-dev libglib2.0-dev \
libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 libncursesw5-dev libreadline-dev \
libssl-dev libtool lld lldb lrzsz mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 \
python3 python3-pip python3-ply python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig \
texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
sudo apt install gcc-multilib-i686-linux-gnu gcc-multilib-s390x-linux-gnu gcc-multilib-x86-64-linux-gnu gcc-multilib-x86-64-linux-gnux32
sudo apt install g++-multilib-i686-linux-gnu g++-multilib-s390x-linux-gnu g++-multilib-x86-64-linux-gnu g++-multilib-x86-64-linux-gnux32
sudo apt install libc6-dev-i386-amd64-cross libc6-dev-i386-cross libc6-dev-i386-x32-cross
以下の文を参考に、arm でのクロスコンパイルの gcc/g++ コンポーネントには特別な接尾辞があります。ここで、Go の良さについて感嘆せざるを得ません。若者は Go 言語の良さを知らず、クロスコンパイルを宝物としていません。
私の Mac は MagSafe 電源を使用しておらず、Type-C でディスプレイに接続しています。10 スレッドでコンパイルを実行していますが、出力電力は基本的に 60W 遅くなります。
mt798x 2102 のデフォルトの設定に ttyd を追加した場合、フルコンパイルには約 14 分かかります。
私はまだ細かいことに詳しくない山猪ですが、結構速いです。ここで、自宅のリビングに 10 台以上の志強なサーバーを持つ大物たちに再び羨望の念を抱かざるを得ません。飛行機が離陸する間にコンパイルが完了します。