Linux kernel 使用基于crosstool ng的工具链交叉编译Linux内核

Linux kernel 使用基于crosstool ng的工具链交叉编译Linux内核,linux-kernel,cross-compiling,beagleboneblack,armv7,Linux Kernel,Cross Compiling,Beagleboneblack,Armv7,我使用crosstool ng项目为BeagleBone Black SBC构建了一个自定义工具链。我遵循了《掌握嵌入式Linux编程》一书中的说明,该书简单地使用了arm-cortex_a8-Linux-gnueabi配置。构建工具链可以很好地工作,但是当使用它使用内核版本4.19.70中的multi_v7_defconfig交叉编译Linux内核时,我会遇到以下一系列错误: /tmp/ccMrtEje.s:43:错误:所选处理器不支持ARM模式下的“dmb ish” 其中,dmb ish可以

我使用crosstool ng项目为BeagleBone Black SBC构建了一个自定义工具链。我遵循了《掌握嵌入式Linux编程》一书中的说明,该书简单地使用了arm-cortex_a8-Linux-gnueabi配置。构建工具链可以很好地工作,但是当使用它使用内核版本4.19.70中的multi_v7_defconfig交叉编译Linux内核时,我会遇到以下一系列错误:

/tmp/ccMrtEje.s:43:错误:所选处理器不支持ARM模式下的“dmb ish”


其中,dmb ish可以是工具链汇编程序找到的任何不受支持的指令。我尝试了BeagleBone的官方内核fork,它有bb.org_defconfig,所以我使用了它,得到了相同的错误。这似乎是一个工具链问题。在配置工具链时,我是否会遗漏一些内容?我已经将FPU设置为硬件,但仍然不熟悉很多配置选项。

我强烈建议使用或的GCC工具链。 我能够使用gcc-arm-8.3-2019.03-x86_64-arm-eabi为您的目标配置构建一个4.19.70内核,使用以下命令没有问题:

wget "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz?revision=402e6a13-cb73-48dc-8218-ad75d6be0e01&la=en" -O gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz
tar Jxf gcc-arm-8.3-2019.03-x86_64-arm-eabi.tar.xz

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.70.tar.xz
tar Jxf linux-4.19.70.tar.xz

CROSS_COMPILE=$(pwd)/gcc-arm-8.3-2019.03-x86_64-arm-eabi/bin/arm-eabi- ARCH=arm make -C linux-4.19.70 mrproper multi_v7_defconfig bzImage

ls -gG linux-4.19.70/arch/arm/boot/zImage
-rwxrwxr-x 1 8655360 Sep 21 03:49 linux-4.19.70/arch/arm/boot/zImage
我希望这有帮助