在x86机器上编译Arm的内核,需要配置交叉编译工具链,需要三个东西,记住:ARCH, CROSS_COMPILE,和PATH。
提醒:交叉编译工具一般芯片供应商的厂家会提供版本,如果交叉编译工具太老可能导致编译失败(比如我这篇文章中使用的9.2就太老了)。
1 设置交叉编译工具链
还有种开机生效的方法没写。。。我的服务器不方便重启。
1.2 永久生效(每次终端进来都需要source,但是最方便的 )
vim~/.bashrc 在行尾添加或修改,加上下面几行exportARCH=arm64exportCROSS_COMPILE=aarch64-none-linux-gnu-exportPATH=$PATH:/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/ 设置完毕后,要执行source~/.bashrc 命令使其生效1.2 临时生效
每次在命令行输入exportARCH=arm64exportCROSS_COMPILE=aarch64-none-linux-gnu-gccexportPATH=$PATH:/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/1.3 手动指定实现交叉编译
# 编译kernel make ARCH=arm CROSS_COMPILE=/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-# 编译kernel module,需要制定kernel路径 make ARCH=arm CROSS_COMPILE=/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-KERNEL_SRC=/home/linux-kernel-dir2 测试交叉编译工具链
2.1测试环境变量
book@:~$echo$ARCHarm64 book@:~$echo$CROSS_COMPILEaarch64-none-linux-gnu-2.1测试交叉编译器
book@:~$ aarch64-none-linux-gnu-gcc-vUsing built-in specs.COLLECT_GCC=aarch64-none-linux-gnu-gccCOLLECT_LTO_WRAPPER=/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/../libexec/gcc/aarch64-none-linux-gnu/9.2.1/lto-wrapper Target: aarch64-none-linux-gnu Configured with: /tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/src/gcc/configure--target=aarch64-none-linux-gnu--prefix=--with-sysroot=/aarch64-none-linux-gnu/libc --with-build-sysroot=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/install//aarch64-none-linux-gnu/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-mpfr=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-mpc=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --with-isl=/tmp/dgboter/bbs/rhev-vm2--rhe6x86_64/buildbot/rhe6x86_64--aarch64-none-linux-gnu/build/build-aarch64-none-linux-gnu/host-tools --enable-fix-cortex-a53-843419 --with-pkgversion='GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)'Thread model: posix gcc version9.2.120191025(GNU Toolchainforthe A-profile Architecture9.2-2019.12(arm-9.10))