我要为我的基于aarch64的设备编译内核
内核源已经准备就绪。
和内核文档说我应该使用 arm-eabi-4.9 toolchain for ARM EABI 来编译内核。
但是它是什么?不同类型的GCC编译器还是什么?
与GCC 4.9相同吗?
为什么我想知道这个,因为我想对编译器进行一些修改,以便如何从源代码构建 arm-eabi-4.9工具链for ARM EABI ?
我在网上做了一些研究,但我发现了gcc 4.9的构建过程和一些关于arm-none-eabi的信息..
我最初在GCC 4.9 this
之上进行了修改我可以使用这些来源,然后为arm建立GCC 4.9工具链,aarch64 --->然后使用这个工具链构建内核?
答案 0 :(得分:1)
编译gcc时,一些配置标志将其构建为交叉编译器......您只能为一对主机/目标体系结构构建gcc二进制文件。当主机和目标相同时,您将获得正常的gcc编译器。如果没有,你会得到一个交叉编译器。
要设置目标,您需要在运行./configure
--target
option
工具链是架构+一些基本库(如glibc)的gcc交叉编译器。你也需要建造那些......
工具链名称来自 arch [-vendor] [-os] - eabi
arm-none-eabi ,是裸机ARM(无操作系统)的交叉编译器。
arm-linux-gnueabi 是ARM二进制文件的交叉编译器,它使用eabi在ARM Linux操作系统下运行(也可以使用它来构建内核)。
这些 arm 工具链,您正在寻找 aarch64-linux-gnu
考虑寻找一个预构建的工具链(linaro,embedian),需要进行一些微调,所以最好从一个工作二进制文件开始,然后运行gcc -v
来展示它是如何构建的。