openEuler 是华为在 2019 年 12 月 31 日开源的 Linux 操作系统,它的 20.03 LTS 版本基于内核 4.19.95 版本,是目前对鲲鹏系列服务器支持最好的 Linux 发行版。还是用习惯了 Gentoo ,决定用 U 盘做一个基于 openEuler 内核的 Gentoo 系统去测试 Taishan 2280 的服务器。
在 amd64 架构的 Gentoo 系统中构编译 aarch64 的环境
首先需要在 x86 的环境下准备 aarch64 的交叉编译环境。Gentoo 下的交叉环境构建是使用 crossdev 工具,所以先通过 emerge 命令进行安装。
emerge -avt sys-devel/crossdev
修改配置文件的内容,主要是生成的交叉编译工具链的存储位置。如果没有对应的目录,通过 mkdir -pv /usr/local/portage-crossdev 命令创建目录。
[crossdev]location = /usr/local/portage-crossdevpriority = 10masters = gentooauto-sync = no
构建 aarch64 的交叉编译工具链
crossdev --stable -t aarch64-unknown-linux-gnu --init-target -oO /usr/local/portage-crossdevecho "cross-aarch64-unknown-linux-gnu/gcc cxx multilib fortran -mudflap nls openmp -sanitize -vtv" >> /etc/portage/package.use/crossdevcrossdev --stable -t aarch64-unknown-linux-gnu -oO /usr/local/portage-crossdev
通过 gcc 命令确定是否安装正确
gcc-config -laarch64-unknown-linux-gnu-gcc --versionaarch64-unknown-linux-gnu-c++ --versionaarch64-unknown-linux-gnu-g++ --version
在 make.conf 文件中加入编译参数,同时将 static-libs 和 static-user 加入到 QEMU 和依赖包中。
echo 'QEMU_SOFTMMU_TARGETS="alpha aarch64 arm i386 mips mips64 mips64el mipsel ppc ppc64 s390x sh4 sh4eb sparc sparc64 x86_64"' >> /etc/portage/make.confecho 'QEMU_USER_TARGETS="alpha aarch64 arm armeb i386 mips mipsel ppc ppc64 ppc64abi32 s390x sh4 sh4eb sparc sparc32plus sparc64"' >> /etc/portage/make.confecho app-emulation/qemu static-user >> /etc/portage/package.use/qemuecho dev-libs/glib static-libs >> /etc/portage/package.use/glibecho sys-libs/zlib static-libs >> /etc/portage/package.use/zlibecho sys-apps/attr static-libs >> /etc/portage/package.use/attrecho dev-libs/libpcre static-libs >&g