我编译openwrt的过程总是充满血与泪的。
openwrt的版本碎片化,我的编译环境更碎片化。x86的软路由我在vmware的虚拟机里;mt798x的硬路由有虚拟机,有ubuntu2202-wsl2。
因为我的mac都是none-case sensitive的,所以我从来没在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的好,少年不知golang好,不把交叉编译当成宝。
mac没有使用magsafe电源,typec连接显示器,10线程编译,基本跑慢60w的输出功率。
mt798x 2102的默认配置,增加了一个ttyd的情况下,全量编译仅用时~14分钟。
作为一个没有吃过细糠的山猪的我,还是蛮快的。这里不得不又再羡慕下,那些家里客厅有十几路志强服务器的大佬们,飞机起飞的功夫,就能编译完。